您的位置:首页 > 其它

菜单功能,实现循序队列

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;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: