整理队列的定义及基本操作.docx
《整理队列的定义及基本操作.docx》由会员分享,可在线阅读,更多相关《整理队列的定义及基本操作.docx(11页珍藏版)》请在冰点文库上搜索。
整理队列的定义及基本操作
(完整版)队列的定义及基本操作
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)队列的定义及基本操作)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)队列的定义及基本操作的全部内容。
(完整版)队列的定义及基本操作
编辑整理:
张嬗雒老师
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望(完整版)队列的定义及基本操作这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力.
本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为〈(完整版)队列的定义及基本操作〉这篇文档的全部内容。
队列的定义及基本操作
一、实验目的、意义
(1)掌握对列的定义和基本操作,熟练掌握循环队列的操作及应用,掌握循环队列的入队和出队等基本操作。
(2)加深对队列结构的理解,逐步培养解决实际问题的编程能力
二、实验内容及要求
说明1:
学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解.
具体要求:
定义循环队列,完成队列的基本操作:
入队和出队等。
(参见教材59页)
三、实验所涉及的知识点
C语言编程、释放空间、参数引用、指针、循环队列、顺序循环队列的基本操作、入队和出队。
四、实验结果及分析
(所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出.)
五、总结与体会
(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。
)
本次上机实验,出现了许多问题,由于对知识点的不熟悉,编的程序错漏百出,导致此次试验没有在上机课的时间内按时完成,之后通过,查看老师课件,查找书本,查阅网页,花费大量时间才完成实验。
这次实验让我发现,自己不仅对数据结构知识不熟练,对以前学过的知识也遗忘的很快,在接下来的实验中,不仅要学好书本知识,还要好好复习以前学的内容。
六、程序清单(包含注释)
#include〈stdio.h>
#includeh〉
#definetrue1
#definefalse0
#defineSize50
//队列的数据结构
typedefstruct
{
intelement[Size];//队列的元素空间
intfront;//头指针
intrear;//尾指针
intcount;//计数,记录队中元素总数
}SeqQueue;
//函数声明表
voidPrint(SeqQueue*Q);
voidChoose(intchoice,SeqQueue*Q);
voidInitQueue(SeqQueue*Q);
intEnterQueue(SeqQueue*Q,intx);
intDeleteQueue(SeqQueue*Q,int*x);
voidPrintQueue(SeqQueue*Q);
intQueueEmpty(SeqQueue*Q);
intQueueFront(SeqQueue*Q);
intQueueFull(SeqQueue*Q);
intmain()
{
SeqQueueQ;
InitQueue(&Q);
Print(&Q);
while(true)
{
printf(”Pressentertocontinue.。
。
。
..。
。
。
”);
getchar();
getchar();
system("cls”);
Print(&Q);
}
return0;
}
//重复刷新并打印功能选项列表来模拟面向对象编程的等待命令操作
voidPrint(SeqQueue*Q)
{
intchoice;
printf(”—---——-----—————-—-——\n");
printf("1.入队.\n");
printf(”2。
出队。
\n”);
printf("3。
打印输出当前队列。
\n”);
printf(”4。
打印输出当前队列头元素。
\n");
printf("5。
按其它任意键退出.\n");
printf("———--——-——————————--—\n");
printf(”请选择你要的操作:
”);
scanf("%d",&choice);
Choose(choice,Q);
}
//选择功能函数
voidChoose(intchoice,SeqQueue*Q)
{
inti,n,a,x=0;
switch(choice)
{
case1:
printf(”请输入要入队的元素个数:
");
scanf(”%d”,&n);
printf("请依次输入要入队的%:
\n”,n);
for(i=1;i<=n;i++)
{
scanf("%d",&x);
EnterQueue(Q,x);
}
printf(”入队成功!
\n");
break;
case2:
printf("请输入要出队的元素个数:
");
scanf("%d”,&n);
printf("出队的%d个元素依次为:
\n”,n);
while(n-—)
{
DeleteQueue(Q,&x);
printf("%d”,x);
}
printf("\n");
printf(”出队成功!
\n”);
break;
case3:
PrintQueue(Q);
break;
case4:
a=QueueFront(Q);
printf(”%d\n\n",a);
break;
default:
exit(0);
}
}
//初始化队列函数
voidInitQueue(SeqQueue*Q)
{
//将*Q初始化为一个空的循环队列
Q—〉front=Q—>rear=0;
}
//入队函数
intEnterQueue(SeqQueue*Q,intx)
{
//将元素x入队
if((Q—>rear+1)%Size==Q-〉front)//队列已经满了
{
returnfalse;
}
Q->element[Q-〉rear]=x;
Q->rear=(Q—>rear+1)%Size;//重置尾指针
returntrue;
}
//出队函数
intDeleteQueue(SeqQueue*Q,int*x)
{
//删除队列的队头元素,用x返回其值
if(Q—〉front==Q-〉rear)//队列为空
returnfalse;
*x=Q->element[Q->front];
Q—〉front=(Q—〉front+1)%Size;//重新设置队头指针
returntrue;
}
//打印输出队列
voidPrintQueue(SeqQueue*Q)
{
inti;
for(i=Q-〉front;i〈Q—〉rear;i++)
{
printf("%d",Q—>element[i]);
}
printf("\n”);
}
//判断空队列
intQueueEmpty(SeqQueue*Q)
{
returnQ-〉count==0;//队列无元素为空
}
//判断满队列
intQueueFull(SeqQueue*Q)
{
returnQ-〉count==Size;//队中元素个数等于Size时队满
}
//取队头元素
intQueueFront(SeqQueue*Q)
{
if(QueueEmpty(Q))
printf("Queueifempty。
");
returnQ->element[Q—〉front];
}