赞
踩
- //----------循环队列的实现----------//
- #include<stdio.h>
- #include<stdlib.h>
- #define OVERFLOW -1
- #define OK 1
- #define ERROR 0
- typedef int QElemType;
- typedef int Status;
- //---队列的顺序存储结构---//
- #define MAXSIZE 100//队列可能达到的最大长度
- typedef struct
- {
- QElemType *base;//存储空间的基地址
- int front;//头指针
- int rear;//尾指针
- }SqQueue;
-
- //---循环队列的初始化---//
- Status InitQueue(SqQueue &Q)
- {
- //构造一个空队列
- Q.base=new QElemType[MAXSIZE];//为队列分配一个最大容量为MAXSIZE的数组空间
- if(!Q.base) exit(OVERFLOW);//存储分配失败
- Q.front=Q.rear=0;//头指针和尾指针置为零,队列为空
- return OK;
- }
-
- //---循环队列的长度---//
- int QueueLength(SqQueue Q)
- {
- //返回Q的元素个数,即队列的长度
- return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
- }
-
- //---循环队列的入队---//
- Status EnQueue(SqQueue &Q,QElemType e)
- {
- //插入元素e为Q的新的队尾元素
- if((Q.rear+1)%MAXSIZE==Q.front)//尾指针在循环意义上加1后等于头指针,表明队满
- return ERROR;
- Q.base[Q.rear]=e;//新元素插入到队尾
- Q.rear=(Q.rear+1)%MAXSIZE;//队尾指针加1
- }
-
- //---循环队列的出队---//
- Status DeQueue(SqQueue &Q,QElemType &e)
- {
- //删除Q的队头元素,用e返回其值
- if(Q.front==Q.rear) return ERROR;//队空
- e=Q.base[Q.front];//保存队头元素
- Q.front=(Q.front+1)%MAXSIZE;//队头指针加1
- return OK;
- }
-
- //---取循环队列的队头元素---//
- int GetHead(SqQueue Q,QElemType &e)
- {
- //返回Q的队头元素,不修改队头指针
- if(Q.front!=Q.rear)//队列非空
- e=Q.base[Q.front];//返回队头元素的值,队头指针不变
- }
-
- void Menu()
- {
- printf("*************************************\n");
- printf("1.循环队列的初始化\n");
- printf("2.循环队列的长度\n");
- printf("3.循环队列的入队\n");
- printf("4.循环队列的出队\n");
- printf("5.取循环队列的队头元素\n");
- printf("6.退出程序\n");
- printf("*************************************\n");
- }
-
- int main()
- {
- int choice,e,e1,e2;
- SqQueue Q;
- while(1)
- {
- Menu();
- printf("请输入要执行的操作:");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1:
- InitQueue(Q);
- printf("循环队列Q,初始化成功!\n");
- break;
- case 2:
- printf("此时循环队列S的长度为:%d\n",QueueLength(Q));
- break;
- case 3:
- printf("请输入要入队的数据元素:");
- scanf("%d",&e1);
- EnQueue(Q,e1);
- printf("数据元素%d入队成功!\n",e1);
- break;
- case 4:
- DeQueue(Q,e2);
- printf("数据元素%d出队成功!\n",e2);
- break;
- case 5:
- GetHead(Q,e);
- printf("此时循环队列的队头元素为:%d\n",e);
- break;
- case 6:
- printf("退出程序!");
- exit(0);
- default:
- printf("输入错误!");
- break;
- }
- }
- }
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:1
- 循环队列Q,初始化成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:3
- 请输入要入队的数据元素:1
- 数据元素1入队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:3
- 请输入要入队的数据元素:2
- 数据元素2入队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:3
- 请输入要入队的数据元素:3
- 数据元素3入队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:3
- 请输入要入队的数据元素:4
- 数据元素4入队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:3
- 请输入要入队的数据元素:5
- 数据元素5入队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:3
- 请输入要入队的数据元素:6
- 数据元素6入队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:2
- 此时循环队列S的长度为:6
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:5
- 此时循环队列的队头元素为:1
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:4
- 数据元素1出队成功!
- *************************************
- 1.循环队列的初始化
- 2.循环队列的长度
- 3.循环队列的入队
- 4.循环队列的出队
- 5.取循环队列的队头元素
- 6.退出程序
- *************************************
- 请输入要执行的操作:6
- 退出程序!
- --------------------------------
- Process exited after 33.71 seconds with return value 0
- 请按任意键继续. . .
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。