菜单功能,实现循序队列
2010-05-07 10:17
357 查看
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front;
int rear;
}CircSeqQueue;
//顺序循环队列的初始化
void QueueInitial(CircSeqQueue *pQ)
{
//创建一个又指针pQ所指向的空顺序循环队列
pQ->front=pQ->rear=0;
}
//顺序循环队列判空
int IsEmpty(CircSeqQueue *pQ)
{//顺序循环队列为空时返回1,否则返回0
return pQ->front==pQ->rear;
}
//顺序循环队列判满
int IsFull(CircSeqQueue *pQ)
{//循环队列为满时返回1,否则返回0
return (pQ->rear+1)%MaxSize==pQ->front;
}
//元素进队
void EnQueue(CircSeqQueue *pQ, ElemType e)
{//若队列不满,则元素e进队
if(IsFull(pQ))//队列已满,退出
{
printf("队列溢出!/n");
exit(1);
}
pQ->rear=(pQ->rear+1)%MaxSize;//队尾指针后移
pQ->data[pQ->rear]=e;
}
//元素出队
ElemType DeQueue(CircSeqQueue *pQ)
{//若循环队列不为空,则删除队头元素,并返回它的值
if(IsEmpty(pQ))//队列为空,退出
{
printf("空队列!/n");
exit(1);
}
pQ->front=(pQ->front+1)%MaxSize;//队头指针后移
return pQ->data[pQ->front];
}
//取队头元素
ElemType GetFront(CircSeqQueue *pQ)
{//若队列不为空,则返回队头元素的值
if(IsEmpty(pQ))
{
printf("空队列!/n");
exit(1);
}
return pQ->data[(pQ->front+1)%MaxSize];
}
//循环队列置空
void MakeEmpty(CircSeqQueue *pQ)
{//将由指针pQ所指向的队列变为孔队
pQ->front=pQ->rear=0;
}
void main()
{
printf("顺序循环队列的实现/n");
int n,i,m, temp;
CircSeqQueue Q;
CircSeqQueue *pQ=&Q;
for(;;)
{
printf("请选择您要执行的操作1~7:/n");
printf("1:初始化队列/n");
printf("2:判空/n");
printf("3:元素进队/n");
printf("4:出队一个元素/n");
printf("5:输出元素个数/n");
printf("6:输出出队序列/n");
printf("7:退出/n");
scanf("%d",&m);
switch(m)
{
case 1: QueueInitial(pQ);
printf("队列初始化成功!/n");
break; //顺序循环队列的初始化
case 2: if(IsEmpty(pQ))
printf("队列为空!/n");
else printf("队列非空!/n");
break; //顺序循环队列判空
case 3: printf("请输入要进队的元素的个数:/n");//元素出队
scanf("%d",&n);
for(i=0;i<n;)
{
printf("请输入第%d个元素:/n",++i);
scanf("%d",&temp);
EnQueue(pQ,temp);
}
break;
case 4: printf("队头元素为:/n"); //出队一个元素,输出该元素
printf("%d /n",DeQueue(pQ));break;
case 5: printf("此时元素个数为:");//输出元素个数
printf("%d /n",pQ->rear-pQ->front);break;
case 6: printf("出队列为:/n");
while(pQ->front!=pQ->rear)//输出出队序列
printf("%d ",DeQueue(pQ));
printf("/n");break;
case 7: return;
}
}
}
#include<stdlib.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front;
int rear;
}CircSeqQueue;
//顺序循环队列的初始化
void QueueInitial(CircSeqQueue *pQ)
{
//创建一个又指针pQ所指向的空顺序循环队列
pQ->front=pQ->rear=0;
}
//顺序循环队列判空
int IsEmpty(CircSeqQueue *pQ)
{//顺序循环队列为空时返回1,否则返回0
return pQ->front==pQ->rear;
}
//顺序循环队列判满
int IsFull(CircSeqQueue *pQ)
{//循环队列为满时返回1,否则返回0
return (pQ->rear+1)%MaxSize==pQ->front;
}
//元素进队
void EnQueue(CircSeqQueue *pQ, ElemType e)
{//若队列不满,则元素e进队
if(IsFull(pQ))//队列已满,退出
{
printf("队列溢出!/n");
exit(1);
}
pQ->rear=(pQ->rear+1)%MaxSize;//队尾指针后移
pQ->data[pQ->rear]=e;
}
//元素出队
ElemType DeQueue(CircSeqQueue *pQ)
{//若循环队列不为空,则删除队头元素,并返回它的值
if(IsEmpty(pQ))//队列为空,退出
{
printf("空队列!/n");
exit(1);
}
pQ->front=(pQ->front+1)%MaxSize;//队头指针后移
return pQ->data[pQ->front];
}
//取队头元素
ElemType GetFront(CircSeqQueue *pQ)
{//若队列不为空,则返回队头元素的值
if(IsEmpty(pQ))
{
printf("空队列!/n");
exit(1);
}
return pQ->data[(pQ->front+1)%MaxSize];
}
//循环队列置空
void MakeEmpty(CircSeqQueue *pQ)
{//将由指针pQ所指向的队列变为孔队
pQ->front=pQ->rear=0;
}
void main()
{
printf("顺序循环队列的实现/n");
int n,i,m, temp;
CircSeqQueue Q;
CircSeqQueue *pQ=&Q;
for(;;)
{
printf("请选择您要执行的操作1~7:/n");
printf("1:初始化队列/n");
printf("2:判空/n");
printf("3:元素进队/n");
printf("4:出队一个元素/n");
printf("5:输出元素个数/n");
printf("6:输出出队序列/n");
printf("7:退出/n");
scanf("%d",&m);
switch(m)
{
case 1: QueueInitial(pQ);
printf("队列初始化成功!/n");
break; //顺序循环队列的初始化
case 2: if(IsEmpty(pQ))
printf("队列为空!/n");
else printf("队列非空!/n");
break; //顺序循环队列判空
case 3: printf("请输入要进队的元素的个数:/n");//元素出队
scanf("%d",&n);
for(i=0;i<n;)
{
printf("请输入第%d个元素:/n",++i);
scanf("%d",&temp);
EnQueue(pQ,temp);
}
break;
case 4: printf("队头元素为:/n"); //出队一个元素,输出该元素
printf("%d /n",DeQueue(pQ));break;
case 5: printf("此时元素个数为:");//输出元素个数
printf("%d /n",pQ->rear-pQ->front);break;
case 6: printf("出队列为:/n");
while(pQ->front!=pQ->rear)//输出出队序列
printf("%d ",DeQueue(pQ));
printf("/n");break;
case 7: return;
}
}
}
相关文章推荐
- jquery实现具有收缩功能的垂直导航菜单
- Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
- redis 实现消息队列,秒杀功能实现小测试
- Vue.js 实现微信公众号菜单编辑器功能(一)
- 面试题7_使用两个栈实现一个队列的功能
- iOS之UI--使用SWRevealViewController 实现侧边菜单功能详解实例
- spring boot amqp实现延迟队列功能
- 使用模板类,实现用两个栈模拟队列的功能
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- 12.springboot使用redis的订阅功能实现消息队列
- MFC 实现richedit右键菜单的复制粘贴功能
- linux操作系统编程——消息队列实现群聊功能
- 给树加上右键菜单,及实现菜单相应功能
- 用两个栈实现一个队列的功能?要求给出算法和思路!
- Python操作RabbitMQ服务器实现消息队列的路由功能
- 【C++】容器适配器实现队列Queue的各种功能(入队、出队、判空、大小、访问所有元素等)
- Python操作RabbitMQ服务器实现消息队列的路由功能
- javascript实现队列功能
- 面试题7:用两个栈实现队列,队列的声明如下,请实现它的两个函数appendTail和deleteHead, 分别完成在队列尾部插入结点和在队列头部删除节点的功能。
- FLEX全屏功能实现右键菜单