zoukankan      html  css  js  c++  java
  • 03---顺序队---20195106023---王亚威.c

    /*队列及其基本概念
    队列的基本概念
    队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out ,简称FIFO)的线性表。
    只允许在表的一端进行插入,而在另一端进行删除。
    */
    /*
    队列的顺序表示和实现
    利用一组连续的存储单元(一维数组) 依次存放从队首到队尾的各个元素,称为顺序队列。
    设立一个队首指针front ,一个队尾指针rear ,分别指向队首和队尾元素。
     ◆ 初始化:front=rear=0。
     ◆ 入队:将新元素插入rear所指的位置,然后rear加1。
     ◆ 出队:删去front所指的元素,然后加1并返回被删元素。
     ◆ 队列为空:front=rear。
     ◆ 队满:rear=MAXQSIZE-1或front=rear。
    */
    # include <stdio.h>
    # include <malloc.h>
    # define true 1
    # define false 0
    typedef int Status ;
    typedef struct Queue
    {
    	int * pBase;  //数组基地址
    	int front;  //队首指针front
    	int rear;  //队尾指针rear
    }QUEUE;
    //队列的初始化
    void init(QUEUE *pQ)
    {
    	pQ->pBase = (int *)malloc(sizeof(int) * 6);
    	pQ->front = 0;
    	pQ->rear = 0;
    }
    //判断队满
    Status full_queue(QUEUE * pQ)
    {
    	if ( (pQ->rear + 1) % 6 == pQ->front  )
    		return true;
    	else
    		return false;
    }
    //入队
    Status en_queue(QUEUE * pQ, int val)
    {
    	if ( full_queue(pQ) )
    	{
    		return false;
    	}
    	else
    	{
    		pQ->pBase[pQ->rear] = val;
    		pQ->rear = (pQ->rear+1) % 6;
    		return true;
    	}
    }
    //遍历队列
    void traverse_queue(QUEUE * pQ)
    {
    	int i = pQ->front;
    	while (i != pQ->rear)
    	{
    		printf("%d  ", pQ->pBase[i]);
    		i = (i+1) % 6;
    	}
    	printf("
    ");
    }
    //判断队空
    Status emput_queue(QUEUE * pQ)
    {
    	if ( pQ->front == pQ->rear )
    		return true;
    	else
    		return false;
    }
    //出队
    Status out_queue(QUEUE * pQ, int * pVal)
    {
    	if ( emput_queue(pQ) )
    	{
    		return false;
    	}
    	else
    	{
    		*pVal = pQ->pBase[pQ->front];
    		pQ->front = (pQ->front+1) % 6;
    		return true;
    	}
    }
    //显示菜单
    void ShowMenu()
    {
    	int i;
    	int WIDESIZE = 65;
    	printf("
    
    
    ");
    	printf("------------------------");
    	printf("	欢迎使用循环队列的入队和出队	");
    	printf("------------------------
    
    ");
    	printf("		");
    	for(i=0;i<WIDESIZE;i++)
    	{
    		printf("*");
    	}
    	printf("
    
    ");
    	printf("		*	1.系统帮助及说明	**");
    	printf("	2.初始化		*
    ");
    	printf("		*	3.入队			");
    	printf("**	4.出队			*
    ");
    	printf("		*	5.遍历			**");
    	printf("	6.退出			*
    ");
        for(i=0;i<4;i++)
    	{
    		printf("	");
    	}
    	printf("
    		");
    	for(i=0;i<WIDESIZE;i++)
    	{
    		printf("*");
    	}
    	printf("
    ");
    	printf("--------------------------------");
    	printf("   2019级电科一班王亚威作品   ");
    	printf("----------------------------------
    ");
    	printf("
    
    请按所需输入菜单编号:");
    }
    //显示帮助信息
    void ShowHelp()
    {
    	printf("1、此系统可以简单完成循环队列的入队和出队
    ");
    	printf("2、输入对应功能项的编号即可进行不同功能的操作。
    ");
    }
    int main(void)
    {
    	QUEUE Q;
    	int val;
        int flag = -1;
    	int choice;
    	while(flag!=6)
    	{
    		ShowMenu();
    		scanf("%d",&choice);
    		switch (choice)
    		{
    			case 1:
    			    ShowHelp();break;
                case 2:
    			    init(&Q);break;
    			case 3:
                    printf("请输入要入队的元素
    ");
                    scanf("%d",&val);
    				en_queue(&Q, val);
    				traverse_queue(&Q);break;
                case 4:
                    if ( out_queue(&Q, &val) )
                    {
                        printf("出队成功,队列出队的元素是: %d
    ", val);
                    }
                    else
                    {
                        printf("出队失败!
    ");
                    }
                    traverse_queue(&Q);break;
                case 5:
                    traverse_queue(&Q);break;
                case 6:
                    flag=6;break;
            }
    	}
        return 0;
    }
    
  • 相关阅读:
    MyBatis 框架系列之基础初识
    从零开始实现在线直播
    面试中关于Redis的问题看这篇就够了
    Spring Boot 中使用 MyBatis 整合 Druid 多数据源
    MyBatis的foreach语句详解
    小结:“服务器端跳转”和“客户端跳转”的区别
    Centos7.3安装vsftp服务
    Spring 注解@Value详解
    Spring中@Bean与@Configuration
    数据结构之LinkList
  • 原文地址:https://www.cnblogs.com/ztguang/p/14065157.html
Copyright © 2011-2022 走看看