首页 [教学设计]队列的定义及基本操作

[教学设计]队列的定义及基本操作

举报
开通vip

[教学设计]队列的定义及基本操作[教学设计]队列的定义及基本操作 附件2: 北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 实验题目 队列的定义及基本操作 实验时间 一、实验目的、意义 (1)掌握对列的定义和基本操作,熟练掌握循环队列的操作及应用, 掌握循环队列的入队和出队等基本操作。 (2)加深对队列结构的理解,逐步培养解决实际问题的编程能力 二、实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别...

[教学设计]队列的定义及基本操作
[教学设计]队列的定义及基本操作 附件2: 北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 实验题目 队列的定义及基本操作 实验时间 一、实验目的、意义 (1)掌握对列的定义和基本操作,熟练掌握循环队列的操作及应用, 掌握循环队列的入队和出队等基本操作。 (2)加深对队列结构的理解,逐步培养解决实际问题的编程能力 二、实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 定义循环队列,完成队列的基本操作:入队和出队等。 (参见教材59页) 三、实验所涉及的MATCH_ word word文档格式规范word作业纸小票打印word模板word简历模板免费word简历 _1716062657498_0 队列的操作特点是“先进先出”。前者主要是头指针、尾指针的使用,后者主要是理解循环队列提出的原因及其特点。两者都要掌握队列空与满的判定条件以及出队列、入队列操作的实现。 四、实验记录 数据结构的算法一般需修改才能在C环境下运行,如算法中采用了C++语言的引用参数,需作修改:将C++函数形参表中以&打头的参数改成以*打头的参数,再在函数体该参数前加*即可。 五、实验结果及分析 主菜单 入队 打印输出当前队列 打印输出当前队列头元素 出队 六、总结与体会 在这次实验中,我没有在上机课的时间内按时完成,我从中发现了自己有许多的不足之处,很多内容老师在上课的时候讲过,没有认真听,所以编的程序经常出差。碰到问题就参考百度或问同学,没有自己的主见。C语言的知识还不够熟练,平时缺少练习。其实还有许多不足之处,这次实验让我更意识到了学习的重要性,不能学了新科目的知识就忘了以前学过的科目的知识。 七、程序清单(包含注释) #include #include #define true 1 #define false 0 #define Size 50 //队列的数据结构 typedef struct { int element[Size];//队列的元素空间 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;i<=n;i++) { scanf("%d",&x); EnterQueue(Q,x); } printf("入队成功~\n"); break; case 2: printf("请输入要出队的元素个数:"); scanf("%d",&n); printf("出队的%d个元素依次为:\n",n); while(n--) { DeleteQueue(Q,&x); printf("%d ",x); } printf("\n"); printf("出队成功~\n"); break; case 3: PrintQueue(Q); break; case 4: a=QueueFront(Q); printf("%d\n\n",a); break; default: exit(0); } } //初始化队列函数 void InitQueue(SeqQueue *Q) { //将*Q初始化为一个空的循环队列 Q->front=Q->rear=0; } //入队函数 int EnterQueue(SeqQueue *Q,int x) { //将元素x入队 if((Q->rear+1)%Size==Q->front)//队列已经满了 { return false; } Q->element[Q->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->element[Q->front]; Q->front=(Q->front+1)%Size;//重新设置队头指针 return true; } //打印输出队列 void PrintQueue(SeqQueue *Q) { int i; for(i=Q->front;irear;i++) { printf("%d ",Q->element[i]); } printf("\n"); } //判断空队列 int QueueEmpty(SeqQueue *Q) { return Q->count==0; //队列无元素为空 } //判断满队列 int QueueFull(SeqQueue *Q) { return Q->count==Size; //队中元素个数等于Size时队满 } //取队头元素 int QueueFront(SeqQueue *Q) { if(QueueEmpty(Q)) printf("Queue if empty."); return Q->element[Q->front]; }
本文档为【[教学设计]队列的定义及基本操作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:77KB
软件:Word
页数:0
分类:初中语文
上传时间:2017-11-12
浏览量:14