单链表的存储与操作.docx_第1页
单链表的存储与操作.docx_第2页
单链表的存储与操作.docx_第3页
单链表的存储与操作.docx_第4页
单链表的存储与操作.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成 绩评阅人重庆邮电大学课程设计实验报告班级:1301416姓名:陈昊学号:2014214156指导老师:夏晨洋课程名称:数据结构实验时间:2015年10月26日-2015年11月2日实验地点:数字图书馆负一楼B132实验二 单链表的存储与操作一、实验目的1理解线性表的逻辑结构;2理解单链表的存储结构特点,掌握单链表的存储分配要点;3 掌握单链表的基本操作及实现,并能正确分析其时间复杂度。二、主要数据结构描述 LinkList( ); /建立只有头结点的空链表 LinkList(T a , int n); /建立有n个元素的单链表 LinkList(); /析构函数 int Length(); /求单链表的长度 T Get(int i); /取单链表中第i个结点的元素值 int Locate(T x); /求单链表中值为x的元素序号 void Insert(int i, T x); /在单链表中第i个位置插入元素值为x的结点 T Delete(int i); /在单链表中删除第i个结点 void PrintList( ); /遍历单链表,按序号依次输出各元素 Node *first; /单链表的头指针在单链表中,需要有构造函数用来构造整个单链表。需要析构函数来删除整个单链表。需要一个Length函数来求单链表的长度。需要一个取值函数Get,传入节点的编号,返回节点的值。需要一个求序号的函数,传入数据的值,返回数据对应的编号,即在单链表中的位置。需要一个插入函数,用来在特定的位置插入一个节点用来存储新数据。需要一个删除函数,用来删除某个节点,并将该节点两端的节点连起来。需要一个遍历函数,用以遍历单链表。三、算法的基本思想描述1. 按位置/值查找:按位置和按值查找的思路大体相同,需要一个工作指针来对整个链表进行遍历,如果所遇到的编号或值与想要的一致,便会把工作指针的信息返回。此函数只需对链表遍历一次,所以平均时间复杂度为O(n);2. 在位置i插入一个数据元素:此函数可以大体分成两个部分。第一个部分是遍历,寻找到要插入的位置,这个与上面的方法相同。第二个部分是插入,要先申请一个新节点s,在让s的指针域等于前一个节点p的指针域,最后让p的指针域等于s。此函数只需对链表遍历一次,所以平均时间复杂度为O(n);3. 删除位置i的数据元素:删除函数也有两个部分,第一个与插入相同,第二个先要暂存被删节点,用以返回,再让前一个节点的指针域等于后一个节点,最后删除被删节点。此函数只需对链表遍历一次,所以平均时间复杂度为O(n);4. 初始化单链表(有参):有前插法和尾插法,实际上都是在链表的后面再添加一个新节点,所以时间复杂度为O(n);5. 遍历单链表、求单链表长度、销毁单链表:这三个函数都是要遍历单链表,所以时间复杂度为O(n)。四、 运行的结果截图五、实验体会和收获通过这次试验,我熟悉了如何取单链表中第i个结点的元素值,如何按位查找位置为i的元素并输出值,如何构建一个单链表。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论