实验4队列子系统Word格式文档下载.docx
《实验4队列子系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验4队列子系统Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
***************************************************
*1------------进队*
*2------------出队*
*3------------读队头元素*
*4------------显示*
*5------------双队列*
*0------------退出*
请选择菜单号(0--5):
3.实验程序
#include<
stdio.h>
typedefstructqueuenode
{
intdata;
structqueuenode*next;
}QueueNode;
typedefstruct
QueueNode*front,*rear;
}LinkQueue;
voidInQueue(LinkQueue*q)
intx;
QueueNode*p=newQueueNode;
printf("
\n\t\t请输入一个整数:
"
);
scanf("
%d"
&
x);
getchar();
p->
data=x;
next=NULL;
if(q->
front==NULL)
q->
front=p;
else
rear->
next=p;
q->
rear=p;
if(p)
printf("
\n\t\t%d进队成功!
x);
}
intOutQueue(LinkQueue*q,int*v)
QueueNode*p;
return0;
{
p=q->
front;
*v=p->
data;
front=p->
next;
if(q->
q->
rear=NULL;
deletep;
return1;
}
voidShowQueue(LinkQueue*q)
QueueNode*p=q->
if(p==NULL)
\n\t\t队列为空!
\n"
\n\t\t队列中的元素为:
while(p!
=NULL)
{
printf("
%6d"
p->
data);
p=p->
}
voidReadFront(LinkQueue*q)
if(q==NULL||q->
没有对顶元素!
\n\t\t队首元素是:
%4d\n"
q->
front->
#defineQUEUEMAX20
intqueue[QUEUEMAX];
intfront=-1;
intrear=-1;
voidInQueue(intval)
rear=(rear++)%QUEUEMAX;
if(front==rear)
\n\t\t队列已满!
queue[rear]=val;
intOutQueue_rear()
intt;
return-1;
t=queue[rear--];
if(rear<
0&
&
front!
=-1)
rear=QUEUEMAX-1;
returnt;
intOutQueue_front()
t=queue[++front];
if(front==QUEUEMAX)
front=0;
intDQ()
intchoice;
intout[5];
intin[5]={5,4,3,2,1};
intt,pos=0,i;
for(i=0;
i<
5;
i++)
InQueue(in[i]);
\n\t\t初始数据顺序是:
[%d]"
in[i]);
\n\t\t1------从头出队2------从尾出队\n\n"
while(front!
=rear)
\t\t请输入选择(1或2):
scanf("
choice);
switch(choice)
case1:
t=OutQueue_front();
out[pos++]=t;
break;
case2:
t=OutQueue_rear();
\n\t\t数据输出的顺序是:
out[i]);
returnchoice;
voidmain()
LinkQueue*q=newLinkQueue;
intval,i=1;
charw,choice;
front=q->
while(i)
\n\t\t队列子系统"
\n\t\t***************************************************"
\n\t\t*1------------进队*"
\n\t\t*2------------出队*"
\n\t\t*3------------读队头元素*"
\n\t\t*4------------显示*"
\n\t\t*5------------双队列*"
\n\t\t*0------------退出*"
\n\t\t请选择菜单号(0--5):
%c"
getchar();
case'
1'
:
InQueue(q);
break;
2'
if(OutQueue(q,&
val)==0)
printf("
else
\n\t\t出队元素为:
val);
3'
ReadFront(q);
4'
ShowQueue(q);
5'
DQ();
0'
i=0;
default:
;
if(choice=='
||choice=='
)
\n\n\t\t按【Enter】键继续,按任意键返回主菜单,\n"
w=getchar();
if(w!
='
\xA'
i=0;
4.程序运行
5.实验小结
这次的实验花了90分钟(两节课)的时间把程序代码打完运行了一遍,从完成时间上来说,要比上次实验的又快了点。
这次的程序代码在第一次运行时提示出现了很多错误,然后我就一个个地都纠正了几次。
除了提示只有一个错误的那个错误外,其他都是我漏打某些语句的单词造成的error,主要还是有点粗心啊!
最后一个错误是DQ双列表上漏了加一个返回值,加上去就行了,而书上没有加。
可能是新版的书有很多错误的原因吧,没注意就按着书上的代码打了下来,结果有了些错误。