- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言版的栈和队列的
实验五
队列和栈
队列
程序名称
设计容量分别为4的循环队列,编程实现如下操
作,并显示各步骤操作后队列的情况:
A、队列初始化;B、1-2-3入队;
C、1-2出队;D、4-5-6入队;E、7入队;
F、再设计一个容量为num_q的循环队列,编成实现两个循环队列的加。
程序清单
#includestdio.h
#includestdlib.h
#includestring.h
#define MAXSIZE 5 //该数值可随着要存储的元素的个数改变而改变
#define ERROR -1
#define TURE 1
#define FALSE 0
#define EXIT 0
typedef struct
{
int queue[MAXSIZE];
int front;
int rear;
}Queue;
int Init_queue(Queue *q);
int En_queue(Queue *q);
int De_queue(Queue *q);
void Prin_Queue(Queue *q);
int Select();
void main()
{ Queue q;
Init_queue(q);
int i,n,m;
while((m=Select())!=EXIT)
{ switch(m)
{
case 1:
printf(队列最多可存%d个数。\n,MAXSIZE-1);
printf(请输入要入队的数据个数:\n);
scanf_s(%d,n);
printf(请输入%d个数据:\n,n);
for(i=0;in;i++)
{
En_queue(q);
}
Prin_Queue(q);
printf(\n);
break;
case 2:
En_queue(q);
Prin_Queue(q);
printf(\n);
break;
case 3:
De_queue(q);
printf(\n);
Prin_Queue(q);
printf(\n);
break;
default:;
}
}
}
int Init_queue(Queue *q)
{ int i=0;
q-front=q-rear=0;
for(;iMAXSIZE;i++)
q-queue[i]=0;
return TURE;
}
int En_queue(Queue *q)
{
int x;
if((q-rear+1)%MAXSIZE==q-front)
{ printf(队列已满。);
return FALSE;
}
else
{
printf(输入数据:);
scanf_s(%d,x);
q-rear=(q-rear+1)%MAXSIZE;
q-queue[q-rear]=x;
return TURE;
}
}
int De_queue(Queue *q)
{
if(q-queue==NULL)
return ERROR;
if(q-front==0q-rear==q-front)
{
printf(队列已空。);
return FALSE;
}
else
{
q-front=(q-front+1)%MAXSIZE;
printf(出队的数据是: %d,q-queue[q-front]);
q-queue[q-front]=0;
}
}
void Prin_Queue(Queue *q)
{
int i;
printf(队列为:);
for(i=0;iMAXSIZE;i++)
printf(%d ,q-queue[i]);
}
int Select()
{ int m;
printf(-------程序有以下基本操作-------\n);
printf(-------1.创建一个新队列-------\n);
printf(-------2.数据入队列-------\n);
printf(-------3.数据出队列-------\n);
printf(-------0.退出-------\n);
scanf(%d,m);
return m;
}
3.运行结果
上图是在存储空间足够的条件下的基本操作;
下图是在有限存储空间条件下的基本操作,可以看到,在最后想让元素“7”入队的时候,由于空间不足,无法入队,提示‘队列已满’;
对程序的分析
正如程序里写的那样,这个程序有创建新队列,数据入队和出队的功能。循环队列巧妙的解决了假溢出的问题,即少用一个
文档评论(0)