- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北邮数据结构实验一题目一.
数据结构实验报告
实验名称: 实验一——题目一
学生姓名:
班 级:
班内序号:
学 号:
日 期: 20年X月X日
实验要求
1.1、试验目的:
通过选择下面四个题目之一进行实现,掌握如下内容:
◎熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法
◎学习指针、模板类、异常处理的使用
◎掌握线性表的操作的实现方法
◎学习使用线性表解决实际问题的能力
1.2、实验内容
根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。
线性表存储结构(五选一):
带头结点的单链表
不带头结点的单链表
循环链表
双链表
静态链表
线性表的基本功能:
构造:使用头插法、尾插法两种方法
插入:要求建立的链表按照关键字从小到大有序
删除
查找
获取链表长度
销毁
其他:可自行定义
编写测试main()函数测试线性表的正确性。
2. 程序分析
2.1 存储结构
2.2 关键算法分析
1、头插法
自然语言描述:
a:在堆中建立新结点
b:将 a[i]写入到新结点的数据域
c:修改新结点的指针域
d:修改头结点的指针域。将新结点加入链表中
伪代码描述
a:Node T * s=new Node T
b:s-data=a[i]
c:s-next=front-next;
d:front-next=s
2:尾插法
自然语言描述:
a:在堆中建立新结点。
b:将 a[i]写入到新结点的数据域。
c:将新结点加入到链表中。
d:修改修改尾指针。
伪代码描述
a:Node T * s=new Node T
b:s-data=a[i]
c:r-next=s;
d:r=s
3:析构/删除函数
自然语言描述:
a:新建立一个指针,指向头结点
b:判断要释放的结点是否存在,
c:暂时保存要释放的结点
d:移动 a 中建立的指针
e:释放要释放的指针
伪代码描述
a:Node T * p=front
b:while(p)
c: front=p
d:p=p-next
e:delete front
4:按位查找函数
自然语言描述:
a:初始化工作指针 p 和计数器 j,p 指向第一个结点,j=1
b:循环以下操作,直到 p 为空或者 j 等于 1
b1:p 指向下一个结点
b2:j 加 1
c:若 p 为空,说明第 i 个元素不存在,抛出异常
d:否则,说明 p 指向的元素就是所查找的元素,返回元素地址
伪代码描述
a:Node T * p=front-next;j=1;
b:while(pj!=1)
b1:p=p-next
b2:j++
c:if(!p) throw ”error”
d:return p
5:按值查找函数
自然语言描述:
a:初始化工作指针 p 和计数器 j,p 指向第一个结点,j=1
b:循环以下操作,找到这个元素或者 p 指向最后一个结点
b1:判断 p 指向的结点是不是要查找的值,如果是,返回 j,否则 p 指向下一个结点,并且 j 的值加一
c:如果找到最后一个结点还没有找到要查找的元素,返回查找失败信息
伪代码描述
a:Node T * p=front-next;j=1;
b:while(p)
b1:
if(p-next==x) return j
p=p-next
j++
c:return “error”
6:插入函数
自然语言描述:
a:在堆中建立新结点
b:将要插入的结点的数据写入到新结点的数据域
c:修改新结点的指针域
d:修改前一个指针的指针域,使其指向新插入的结点的位置
伪代码描述
a:Node T * s=new Node T;
b:s-data=p-data
c:s-next=p-next
d:p-next=s
e:p-data=x
7:删除函数
自然语言描述:
a:从第一个结点开始,查找要删除的位数 i 前一个位置 i-1 的结点
b:设 q 指向第 i 个元素
c:将 q 元素从链表中删除
d:保存 q 元素的数据
e:释放 q 元素
伪代码描述
a:q=p-next
b:p-next=q-next
c:x=q-data
d:delete q
8:遍历打印函数
自然语言描述:
a:判断该链表是否为空链表,如果是,报错
b:如果不是空链表,新建立一个 temp 指针
您可能关注的文档
最近下载
- 管桁架相贯线焊接讲解.pptx VIP
- 2025年教科版(2024)小学科学三年级上册(全册)教学设计(附目录P171).docx
- 接受式音乐治疗课程教学大纲.pdf VIP
- 1第一课 认识c++ 课件(c++基础教程).pptx VIP
- 一次性使用微创扩张引流套件产品技术要求注册完整参考版.docx VIP
- BS-EN-12266-2-2002-(中文版).pdf VIP
- 14J936 变形缝建筑构造.docx VIP
- 学习《加大国家通用语言文字推广力度,促进铸牢中华民族共同体意识》推普周专题课件.ppt VIP
- SL 400-2016 水利水电工程机电设备安装安全技术规程.docx VIP
- 人教版2025-2026学年二年级道德与法治上册教学计划(及进度表).docx
文档评论(0)