1 / 12
文档名称:

链队列和循环队列数据结构实验.doc

格式:doc   大小:184KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

链队列和循环队列数据结构实验.doc

上传人:kt544455 2019/9/14 文件大小:184 KB

下载得到文件列表

链队列和循环队列数据结构实验.doc

文档介绍

文档介绍:淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:数据结构实验链队列和循环队列班级:学号:姓名:评语:成绩:指导教师:批阅时间:年月日线性数据结构算法实现与应用报告要求1目的与要求:1)掌握栈与队列的数据类型描述及特点;2)掌握栈的顺序和链式存储存表示与基本算法的实现;3)掌握队列的链式存储表示与基本操作算法实现;4)掌握栈与队列在实际问题中的应用和基本编程技巧;5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数据的运行过程抓获相关屏面验证程序设计的正确性;7)认真书写实验报告,并按时提交。2实验内容或题目以下题目学生根据自己的兴趣和能力可选作一道作为实验题目:根据栈数据结构,分别建立一个顺序栈和链式栈并实现其上基本操作(出栈和入栈等);根据队列数据结构,分别建立链队列和循环队列,并完成其上的基本操作(出入队列等);参考书上表达式求值例题,应用栈的基本操作实现带括号表达式求值运算及其进出栈模拟过程(给出程序执行过程中栈的变化过程);阅读P83栈与递归的实现一节内容和3阶汉诺塔问题。使用栈数据结构解决3阶汉诺塔问题,编写程序并模拟栈及其汉诺塔的搬运过程(给出程序执行过程栈的变化过程与圆盘的搬动状态)。其它实际应用举例(如打印杨辉三角形)。3实验步骤与源程序链队列#include<>#include<>#include<>#defineOK1#defineERROR0#defineOVERFLOW0typedefstructQNode{ intdata; structQNode*next;}QNode,*QueuePtr;typedefstruct{ QueuePtrfront; QueuePtrrear;}LinkQueue;intInitQueue(LinkQueue&Q){ ==(QueuePtr)malloc(sizeof(QNode)); if(!) exit(OVERFLOW); ->next=NULL; returnOK;}voidQueueEmpty(LinkQueueQ){ if(==) printf("该链队为空:"); else printf("该链队不为空:");}voidEnQueue(LinkQueue&Q,inte){ QueuePtrp; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) printf("error"); p->data=e; ->next=p; =p; printf("元素%d入队成功",e);}intEnnQueue(LinkQueue&Q,inte){ QueuePtrp; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) returnERROR; p->data=e; ->next=p; =p; returnOK;}voidDeQueue(LinkQueue&Q){ QueuePtrp; if(==) printf("该链队为空"); p=->next; ->next=p->next; if(==p) =; free(p); printf("队首元素删除成功");}voidGetHead(LinkQueue&Q){ QueuePtrp; if(==) printf("该链队为空"); p=->next; printf("队首元素为:%d",p->data);}voidOutQueue(LinkQueue&Q){ QueuePtrp; if(==) printf("该链队为空"); p=->next; while(p!=->next) { printf("%d",p->data); p=p->next; }}voidLengthQueue(LinkQueue&Q){ intf=0; QueuePtrp; if(==) printf("该队列的长度是:%d",f); else { p=->next; while(p!=->next) { p=p->next; f++; } printf("该队列的长度是:%d",f); }}voidmain(){ system("cls"); intflag=1,i; LinkQueueQ; InitQueue(Q); printf("*****