课程设计 队列问题.doc

课程设计 队列问题.doc

ID:58477571

大小:176.17 KB

页数:17页

时间:2020-09-03

课程设计 队列问题.doc_第1页
课程设计 队列问题.doc_第2页
课程设计 队列问题.doc_第3页
课程设计 队列问题.doc_第4页
课程设计 队列问题.doc_第5页
资源描述:

《课程设计 队列问题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程设计报告题目:《队列问题》院系:计算机科学与应用系专业年级:计算机科学与技术学号:学生: 指导老师:2013年6月29日1、需求分析1.1功能需求链队列基本操作的实现:链队列的初始化,生成一个空链队列;链队列的撤消,即删除队列中的所有结点,仅留下指针结点;链队列的入队操作,即在已知队列的队尾插入一个元素e,即修改队尾指针;链队列的出队操作,即返回队首结点的元素值并删除队首结点;返回元素的第一个值;设计一个菜单,具有上述要求的所有功能、退出系统等最基本的功能。1.2输入的形式和输入值的围、输出的形式程序输入:根据主界面提示,输入所选的操作,并根据提示按“2”键输入元素。

2、若为非法输入,系统会做出提示。程序输出:输入想要操作的选项,便能输出与之对应的结果,接着输入下次操作选项,按“0”退出主页面。1.3设计容1.建立一个空链队列;2.插入一个元素;3.删除元素;4.返回元素的第一个值;5.消除队列;1.4运行环境(1)WINDOWS7/XP系统(2)visualC++6.0编译环境2、概要设计2.1该系统的功能简介实现链队列的初始化,生成一个空链队列;链队列的撤消,即删除队列中的所有结点,仅留下指针结点。链队列的入队操作,即在已知队列的队尾插入一个元素e,即修改队尾指针。链队列的出队操作,即返回队首结点的元素值并删除队首结点;设计一个菜单,

3、具有上述要求的所有功能、退出系统等最基本的功能。2.2总体程序框图进入程序构建队列插入元素删除元素消除队列退出程序返回元素3、详细设计3.1构造空队列StatusInitqueue(Linkqueue&Q){Q.front=Q.rear=(Queueptr)malloc(sizeof(Qnode));if(!Q.front)return(OVERFLOW);//存储分配失败Q.front->next=NULL;returnOK;}//构造一个空队列3.2消除队列StatusDestroyqueue(Linkqueue&Q){while(Q.front){Q.rear=Q.

4、front->next;free(Q.front);Q.front=Q.rear;}returnOK;}//销毁队列3.3插入新元素StatusEnqueue(Linkqueue&Q,Qelemtypee)//插入元素e,为Q新的队尾元素{Queueptrp;p=(Queueptr)malloc(sizeof(Qnode));if(!p)return(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;returnOK;}//插入新元素3.4删除队头元素StatusDequeue(Linkqueue&Q,Qel

5、emtype&e){Queueptrp;//若队列不空,则删除Q的对头元素,用e返回其值,并返回OK//否则返回ERRORif(Q.front==Q.rear)returnERROR;p=Q.front->next;e=p->data;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;free(p);returnOK;}//删除队头元素3.5返回队头元素Statusgetfirst(Linkqueue&Q){if(Q.front==Q.rear){returnERROR;}elsereturnQ.front->next->

6、data;}//返回队列的第一个元素3.6主函数main(){LinkqueueQ;Qelemtypee,n,i;charselect;do{printf("请输入您的选择:");printf("1.构造一个空队列");printf("2.向队列中插入元素");printf("3.删除队列中的元素");printf("4.销毁队列");printf("5.返回队列的第一个元素");printf("0.退出程序");printf("您的选择是:");select=getchar();switch(select){case'1':if(Init

7、queue(Q))printf("构造成功");elseprintf("构造失败");break;case'2':printf("你想插入多少个元素:");scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&e);if(Enqueue(Q,e)!=OK)returnERROR;}break;case'3':if(Dequeue(Q,e))printf("你删除的对头元素是:%d",e);elseprintf("删除失败");break;case'4':if(Destroyq

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。