北邮数据结构实验报告实验一线性表.doc

北邮数据结构实验报告实验一线性表.doc

ID:55145931

大小:101.36 KB

页数:11页

时间:2020-04-28

北邮数据结构实验报告实验一线性表.doc_第1页
北邮数据结构实验报告实验一线性表.doc_第2页
北邮数据结构实验报告实验一线性表.doc_第3页
北邮数据结构实验报告实验一线性表.doc_第4页
北邮数据结构实验报告实验一线性表.doc_第5页
资源描述:

《北邮数据结构实验报告实验一线性表.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数据结构实验报告实验名称:实验一线性表——题目1学生姓名:申宇飞班级:信通3班班内序号:03学号:2012210064日期:2013年11月4日1.实验要求实验目的:熟练掌握线性表的基本操作,包括:创建、插入、删除、查找、输出、求长度、合并等运算,以及各类操作在顺序存储结构和链式存储结构上的实现。实验内容:根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。线性表存储结构(五选一):1、带头结点的单链表2、不带头结点的单链表3、循环链表4、双链表5、静态链表

2、线性表的基本功能:1、构造:使用头插法、尾插法两种方法2、插入:要求建立的链表按照关键字从小到大有序3、删除4、查找5、获取链表长度6、销毁7、其他:可自行定义编写测试main()函数测试线性表的正确性。2.程序分析2.1存储结构链表的具体存储表示为:  ①用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)  ②链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址信息(称为指针)链表的

3、结点结构 ┌──┬──┐ │data│next│ └──┴──┘       data域--存放结点值的数据域      next域--存放结点的直接后继的地址(位置)的指针域(链域)地址内存单元a[3]1080H……a[1]10C0H……a[4]^……a[2]1000H……1000H头指针1020H1080H10C0Hfront…………2.2关键算法分析1、关键算法:1:头插法自然语言描述:a:在堆中建立新结点b:将a[i]写入到新结点的数据域c:修改新结点的指针域d:修改头结点的指针域。将新

4、结点加入链表中伪代码描述a:Node*s=newNodeb:s->data=a[i]c:s->next=front->next;d:front->next=s2:尾插法自然语言描述:a:在堆中建立新结点:b:将a[i]写入到新结点的数据域:c:将新结点加入到链表中d:修改修改尾指针伪代码描述a:Node*s=newNodeb:s->data=a[i]c:r->next=s;d:r=s3:析构/删除函数自然语言描述:a:新建立一个指针,指向头结点b:判断要释放的结点是否存在

5、,c:暂时保存要释放的结点d:移动a中建立的指针e:释放要释放的指针伪代码描述a:Node*p=frontb:while(p)c:front=pd:p=p->nexte:deletefront4:按位查找函数自然语言描述:a:初始化工作指针p和计数器j,p指向第一个结点,j=1b:循环以下操作,直到p为空或者j等于1b1:p指向下一个结点b2:j加1c:若p为空,说明第i个元素不存在,抛出异常d:否则,说明p指向的元素就是所查找的元素,返回元素地址伪代码描述a:Node*p=fron

6、t->next;j=1;b:while(p&&j!=1)b1:p=p->nextb2:j++c:if(!p)throw”error”d:returnp5:按位查找函数自然语言描述:a:初始化工作指针p和计数器j,p指向第一个结点,j=1b:循环以下操作,找到这个元素或者p指向最后一个结点b1:判断p指向的结点是不是要查找的值,如果是,返回j,否则p指向下一个结点,并且j的值加一c:如果找到最后一个结点还没有找到要查找的元素,返回查找失败信息伪代码描述a:Node*p=front->next

7、;j=1;b:while(p)b1:if(p->next==x)returnjp=p->nextj++c:return“error”6:插入函数自然语言描述:a:在堆中建立新结点b:将要插入的结点的数据写入到新结点的数据域c:修改新结点的指针域d:修改前一个指针的指针域,使其指向新插入的结点的位置伪代码描述a:Node*s=newNode;b:s-data=p->datac:s->next=p->nextd:p->next=se:p->data=x7:删除函数自然语言描述:a:从第一

8、个结点开始,查找要删除的位数i前一个位置i-1的结点b:设q指向第i个元素c:将q元素从链表中删除d:保存q元素的数据e:释放q元素伪代码描述a:q=p->nextb:p->next=q->nextc:x=q->datad:deleteq8:遍历打印函数自然语言描述:a:判断该链表是否为空链表,如果是,报错b:如果不是空链表,新建立一个temp指针c:将temp指针指向头结点d:打印temp指针的data域e:逐个往后移动temp指针,直到temp指针的指向的指针的next域为空伪代码描述Iff

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

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

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