队列的定义及基本操作.doc_第1页
队列的定义及基本操作.doc_第2页
队列的定义及基本操作.doc_第3页
队列的定义及基本操作.doc_第4页
队列的定义及基本操作.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附件2:北京理工大学珠海学院实验报告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY实验题目 队列的定义及基本操作 实验时间一、实验目的、意义(1)掌握对列的定义和基本操作,熟练掌握循环队列的操作及应用, 掌握循环队列的入队和出队等基本操作。(2)加深对队列结构的理解,逐步培养解决实际问题的编程能力二、实验内容及要求说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。具体要求:定义循环队列,完成队列的基本操作:入队和出队等。 (参见教材59页)三、实验所涉及的知识点队列的操作特点是“先进先出”。前者主要是头指针、尾指针的使用,后者主要是理解循环队列提出的原因及其特点。两者都要掌握队列空与满的判定条件以及出队列、入队列操作的实现。四、实验记录数据结构的算法一般需修改才能在C环境下运行,如算法中采用了C+语言的引用参数,需作修改:将C+函数形参表中以&打头的参数改成以*打头的参数,再在函数体该参数前加*即可。五、实验结果及分析主菜单入队打印输出当前队列打印输出当前队列头元素出队六、总结与体会在这次实验中,我没有在上机课的时间内按时完成,我从中发现了自己有许多的不足之处,很多内容老师在上课的时候讲过,没有认真听,所以编的程序经常出差。碰到问题就参考百度或问同学,没有自己的主见。C语言的知识还不够熟练,平时缺少练习。其实还有许多不足之处,这次实验让我更意识到了学习的重要性,不能学了新科目的知识就忘了以前学过的科目的知识。七、程序清单(包含注释)#include#include#define true 1#define false 0#define Size 50/队列的数据结构typedef structint elementSize;/队列的元素空间int front;/头指针指示器int rear;/尾指针指示器int count;/计数器,记录队中元素总数SeqQueue;/函数声明表void Print(SeqQueue *Q);void Choose(int choice,SeqQueue *Q);void InitQueue(SeqQueue *Q);int EnterQueue(SeqQueue *Q,int x);int DeleteQueue(SeqQueue *Q,int *x);void PrintQueue(SeqQueue *Q);int QueueEmpty(SeqQueue *Q);int QueueFront(SeqQueue *Q);int QueueFull(SeqQueue *Q);/主函数int main()SeqQueue Q;InitQueue(&Q);Print(&Q);while(true)printf(Press enter to continue.);getchar();getchar();system(cls);Print(&Q);return 0;/重复刷新 并 打印功能选项列表 来模拟面向对象编程的等待命令操作void Print(SeqQueue *Q)int choice;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);/选择功能函数void Choose(int choice,SeqQueue *Q)int i;int n;int a;int x=0;switch(choice)case 1:printf(请输入要入队的元素个数:);scanf(%d,&n);printf(请依次输入要入队的%d个元素:n,n);for(i=1;ifront=Q-rear=0;/入队函数int EnterQueue(SeqQueue *Q,int x)/将元素x入队if(Q-rear+1)%Size=Q-front)/队列已经满了return false;Q-elementQ-rear=x;Q-rear=(Q-rear+1)%Size;/重置尾指针return true;/出队函数int DeleteQueue(SeqQueue *Q,int *x)/删除队列的队头元素,用x返回其值if(Q-front=Q-rear)/队列为空return false;*x=Q-elementQ-front;Q-front=(Q-front+1)%Size;/重新设置队头指针return true;/打印输出队列void PrintQueue(SeqQueue *Q)int i;for(i=Q-front;irear;i+)printf(%d ,Q-elementi);printf(n);/判断空队列int QueueEmpty(SeqQueue *Q) return Q-count=0; /队列无元素为空/判断满队列int QueueFull(SeqQueue *Q) return Q-count=Size

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论