- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
數据结构实验报告表格循环链队列
数 据 结 构 实 验 报 告 成绩_____
学号 1217417007 姓名 严梦 授课教师 黄 欣 专业 12信计 实验报告递交日期 2014.10.28 实验题目
用带头结点的循环单链表表示队列,并且只设置一个尾指针。编制程序完成队列操作。
需求分析
1.程序的实现功能:
编写函数:
建立循环队列,返回尾指针函数 linkqueue *create( )
X入队,返回尾指针函数 linkqueue * enqueue(linkqueue *rear,int x)
出队返回队头元素函数 linkqueue * outqueue(linkqueue *rear)
(4)显示队列元素函数 void list(linkqueue *rear)
(5)删除队列函数 linkqueue * del(linkqueue *rear)
(6)主函数完成功能:
a). 调用 rear=creat( ) ; b). 调用 list(rear); c). 输入x值;
d). 调用 enqueue(rear,x); e). 调用 list(rear); f). 调用 outqueue(rear)
g).调用 list(rear); h) 调用 del(rear) i) list(rear).
2.数据输入的内容﹑输入形式与范围
输入所创建的循环队列中的数据,以及要插入的x的值,其类型是整型数;输入数据以回车符相隔,以’0’为输入结束符。
3.数据输出的内容与形式
输出创建循环队列时队列数据,插入x后的队列中数据和出队之后队列的数据, 数据以“%3d”相隔。
二. 主要算法的算法思想.
1.创建循环队列:
用尾插法建立循环队列,每个新插入的结点都作为队列的最后一个结点。读入结点的数值,生成的新结点插入队尾。再把新结点的指针域指向头结点,然后返回尾指针函数。
2. 显示队列元素的函数:
从rear的第一个结点开始往后依次输出结点数据。
3. 插入值为x的结点到rear的队头函数:
生成值为x的结点*p在*rear之后,把*p的指针域指向头结点,*p作为*rear的后继。
出队返回队头元素函数:
保留头结点的位置,h是头结点,指针p指向队头元素,把队头元素的后继作为头结点的后继,释放p。即删除队头元素。
4. 释放单链表rear结点空间函数:
尾指针的后继是头结点,头结点就是尾结点,相当于将队列置空。
5. 主函数:
先申明函数首部,设置尾指针;依次调用创建队列函数、显示队列函数;输入x值,调用入队函数、显示队列函数,调用出队函数、显示队列函数和释放队列函数,调用显示队列函数。
三. 设计:
1.线性表存储结构:链式存储。
链表结点类型定义:
typedef struct node
{int data;
struct node *next;
}linklist; /*单链表结点类型*/
2.参数表(列出所有的符号常量与全局变量)
参数名
数据传递方式
数据内容
传递
所属函数
NULL
符号常量
宏定义
0
所有函数
函数间的调用关系图
4.列出每个函数的函数声明、函数作用、函数值、形参内容与形式、主要算法步骤等
1).创建单链表函数
函数首部:linkqueue *creat( )
形参:rear队列尾指针
函数作用:创建存放原始数据的队列
函数值:无
局部变量 rear:作为尾指针,指向生成的队列的尾结点
new:结点类型指针,指向新结点。
h:作为头指针,指向头结点。
输入一个结点算法主要步骤:
(a) 开辟新结点空间news指向 news=(linklist *)malloc(sizeof(linklist));
(b) 新结点*new插入队尾 rear-next=news;
(c) 给新结点赋值x news-data=x;
(d) 尾指针rear指向新的表尾 rear=news;
(e) 读入下一个结点的值 scanf(“%d”,x);getchar();
输入链表结点循环条件: while(x !=0)
输入结点数据结束后,尾指针指向头结点 rear-next=h;
2).输出循环队列函数
函数首部:void list(li
文档评论(0)