1、2.插入一个元素;3.删除元素;4.返回元素的第一个值;5.消除队列;1.4运行环境(1)WINDOWS7/XP系统(2)visual C+6.0编译环境2、概要设计2.1该系统的功能简介实现链队列的初始化,生成一个空链队列;链队列的撤消,即删除队列中的所有结点,仅留下指针结点。链队列的入队操作,即在已知队列的队尾插入一个元素e,即修改队尾指针。设计一个菜单,具有上述要求的所有功能、退出系统等最基本的功能。2.2 总体程序框图进入程序构建队列插 入 元 素删除元素消除队列退出程序返回元素3、 详细设计3.1 构造空队列Status Initqueue(Linkqueue &Q) Q.front
2、 = Q.rear = (Queueptr) malloc (sizeof(Qnode); if(!Q.front) return (OVERFLOW);/存储分配失败 Q.front -next = NULL; return OK;/构造一个空队列3.2 消除队列 Status Destroyqueue(Linkqueue & while(Q.front) Q.rear = Q.front -next; free(Q.front); Q.front = Q.rear; /销毁队列3.3 插入新元素Status Enqueue(Linkqueue &Q,Qelemtype e)/插入元素e,为
3、Q新的队尾元素 Queueptr p; p = (Queueptr) malloc (sizeof(Qnode);p) return(OVERFLOW); p-data = e; Q.rear-next = p; Q.rear = p;/插入新元素3.4 删除队头元素Status Dequeue(Linkqueue &Q,Qelemtype &e)/若队列不空,则删除Q的对头元素,用e返回其值,并返回OK/否则返回ERROR if(Q.front = Q.rear) return ERROR; p = Q.front- e = p-data; Q.front-next = p- if(Q.re
4、ar = p) Q.rear = Q.front; free(p);/删除队头元素3.5返回队头元素Status getfirst(Linkqueue &Q) if(Q.front=Q.rear) return ERROR; else return Q.front-next-/返回队列的第一个元素3.6主函数main() Linkqueue Q; Qelemtype e,n,i; char select; do printf(请输入您的选择:nn);1.构造一个空队列n2.向队列中插入元素n3.删除队列中的元素n4.销毁队列n5.返回队列的第一个元素n0.退出程序n您的选择是: select
5、= getchar(); switch(select) case 1: if(Initqueue(Q)构造成功n else构造失败n break;2你想插入多少个元素: scanf(%d,&n); for(i=1;i=n;i+)e); if(Enqueue(Q,e) != OK) return ERROR;3 if(Dequeue(Q,e)你删除的对头元素是: %dn,e);删除失败n4 if(Destroyqueue(Q)销毁队列成功n销毁失败n case5 int a;队列的第一个元素是:n a=getfirst(Q);,a); default:您的输入不服规范,请重新输入! getcha
6、r(); while(select!=03.7函数的调用关系图开始Main函数InitqueueEnqueueDestroyqueue函数Getfirst函数结束 函数的关系调用图4、调试分析4.1、问题的解决 在调试过程中,出现错误,根据visual C+6.0的检错找到错误所在,然后错误行附近寻找错误所在,进而改正错误;遇到找不到和不能改正的错误,就向老师,同学,网络寻求帮助。4.2、经验和体会 必须牢固掌握基础知识。由于C语言是大一所学知识,有所遗忘,且未掌握好这学期所学的数据结构这门课,所以在实习之初感到棘手。不知如何下手,但在后来的实习过程中自己通过看书和课外资料,并请教其他同学,慢
7、慢地对C语言和数据结构知识有所熟悉。这时才逐渐有了思路。所以,这次实习之后,我告诫自己:今后一定要牢固掌握好专业基础知识。必须培养严谨的科学态度。自己在编程时经常因为一些类似于“少了分号”的小错误而导致错误,不够认真细致,这给自己带来了许多麻烦。编程是一件十分严谨的事情,容不得马虎。所以在今后自己一定要培养严谨的科学态度。我想这不仅是对于程序设计,做任何事都应如此。这次课程设计也让我充分认识到数据结构这门课的重要性。它给我们一个思想和大纲,让我们在编程时容易找到思路,不至于无章可循。同时它也有广泛的实际应用。 在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了
8、我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。 两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织,来配合学习,两周中我收益很大,学到很多。5、用户使用说明在VC环境下编译连接后,根据主页面的提示输入选择,第一步,先输入“1”构造一个空队列,接着向空对列中插入元素,此时选“5”返回第一个元素,如果此时选“3”,删除队头元素,再返回首元素时,返回删除后的下一个元素。6、测试结果6.1主界面6.2建立队列6.3插入元素6.4返回队头元素6.5
9、删除元素6.5销毁队列7、附录#include stdio.hstdlib.h#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Qelemtype;typedef int Status;typedef struct Qnode Qelemtype data; struct Qnode *next;Qnode, *Queueptr;typedef struct Queueptr front; Queueptr rear;Linkqu
10、eue;Q);Q,Qelemtype e);Q,Qelemtype e) Status getfirst(Linkqueue &参考文献1赵国玲. C语言与数据结构M. 北京:电子工业出版社,2严蔚敏,吴伟民. 数据结构(C语言版)M. 北京:清华大学出版社,3 严蔚敏.数据结构 C语言M.北京: 清华大学出版社,4 谭浩强. C程序设计指导M.北京:清华大学出版社,5 潘新民, 王燕芳. 微型计算机控制技术M, 第2版. 北京: 电子工业出版社致谢 在此谨对那些无私帮助我的同学以及无私教育我的辛勤的老师及学院领导表示感谢,谢谢你们的帮助。每一个语句、每一个算法,都来自于你们的无私帮助及辛勤教
11、诲。 数据结构课程设计评分标准课程名称:数据结构课程设计 指导教师:傅尔胜 姓名赵永峰性别男学号121006237班级1210062程序运行情况(占总成绩20%) 能正确运行(20分) 基本能正确运行(15分)能运行但结果不完善(10分) 程序功能的完善程度(占总成绩10%) 完善(10分) 基本完善(8分) 不完善(5分)程序结构的合理性 合理(10分) 基本合理(8分)不太合理(5分)对问题的答辩情况(占总成绩40%) 概念正确有创新(40分) 能正确回答所有问题(35分)基本能正确回答(30分) 部分问题回答概念不清晰(20分)学生的工作态度与独立工作能力 工作态度认真能独立完成任务(10分) 工作态度认真但独立性较差(8分)工作态度基本认真但缺乏独立性(5分)设计报告的规范性符合规范(10分) 基本符合规范(8分)规范性较差(5分)成绩等级得分优秀:90分100分; 良好:80分89分; 中等:7079分;及格:6069分; 不及格0分59分。指导教师评语:成绩: 指导教师签名: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1