实验2链表验证实验_第1页
实验2链表验证实验_第2页
实验2链表验证实验_第3页
实验2链表验证实验_第4页
实验2链表验证实验_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、-. z.班级:计算机13-2*:1:成绩:_实验二单链表操作验证实验目的掌握线性表的存储构造;验证单链表及其根本操作的实现;进一步掌握数据构造及算法的程序实现的根本方法。实验容用头插法或尾插法建立带头结点的单链表;对已建立的单链表实现插入、删除、查找等根本操作。设计与编码本实验用到的理论知识模板类、多文件系统,链表的操作算法设计参见课本数据构造C+版编码将算法转化为c+程序,设计主函数完成对各成员函数的调用。源代码:/LinkList.h#ifndef _LINKLIST_H#define _LINKLIST_H#include using namespace std;template st

2、ruct Node T data;struct Node*ne*t;template class LinkList Node*first; /单链表的头指针public:LinkList(T a,int n); /建立有n个元素的单链表LinkList(); /析构函数void CreateList(int n); void Insert(int i,T *); /在单链表中第i个位置插入值为*的节点T Delete(int i); /在单链表中删除第i个节点int Locate(T *); /求单链表中值为*的序号void PrintList(); /遍历单链表,按序号依次输出个元素;tem

3、plate LinkList:LinkList(T a,int n) first=new Node;first-ne*t=NULL; /初始化一个空链表for ( int i=n; i=0; i-) Node *s;s=new Node;s-data=ai;s-ne*t=first-ne*t; /为每个数组元素建立一个结点first-ne*t=s; /插入到头结点之后 /构造函数,创立一个新的链表template LinkList:LinkList() Node*p;p=new Node;p=first; /工作指针p初始化while (p) /释放单链表的每一个结点的存储空间Node*q;q

4、=new Node;q=p; /暂存被释放结点p=p-ne*t; /工作指针p指向被释放结点的下一个结点,使单链表不断开delete q; /析构函数,释放空间template void LinkList:Insert(int i,T *) Node*p;p=new Node;p=first; /工作指针p初始化int j=0;while (p&jne*t; /工作指针p后移j+;if (!p) throw位置;else Node*s;s=new Node;s-data=*; /向存申请一个结点s,其数据域为*s-ne*t=p-ne*t; /将结点s插入到结点p之前p-ne*t=s; /插入元

5、素到位置itemplate T LinkList:Delete(int i) Node*p,*q;T *;p=new Node;p=first;int j=0; /工作指针p初始化while (p&jne*t;j+;if (!p | !p-ne*t)throw位置; /结点p不存在或结点p的后继结点不存在else q=p-ne*t;*=q-data; /暂存被删结点p-ne*t=q-ne*t; /摘链delete q;return *; /删除位置i的函数template int LinkList:Locate(T *) Node*p;p=new Node;p=first-ne*t;int j

6、=1;while (p&p-data!=*) p=p-ne*t; /工作指针p后移j+;if (p)return j;elsereturn 0; /查找template void LinkList:PrintList() Node*p;/设置工作指针p=first-ne*t;/从首元结点开场遍历int i=1;/元素位序while(p)coutdatane*t;i+;coutendl; /遍历显示链表#endif/LinkList.cpp#include #include Windows.h#include LinkList.husing namespace std;char pause;/t

7、ypedef int T;int main()int n;cout输入要创立的链表的元素个数(n;coutendl;int a100;cout请依次输入数组元素的值。endl;for( int i=0; in; i+) cout输入aiai;coutendl;LinkList L(a,n);/T num,prior_num;/int num,prior_num;int num;int choice;docout1-插入操作n;cout2-删除操作n;cout3-查找操作n;cout4-输出链表n;cout5-退出n;coutchoice;switch(choice)case 1:/在指定位置插

8、入元素int i;couti;coutendl;coutnum;coutendl;tryL.Insert(i,num);catch(char *error) couterrorendl; break;case 2:/删除指定位置元素couti;coutendl;trynum=L.Delete(i);cout被删除元素为:numendl;catch(char *error) couterrorendl; break;case 3:/ 按值查找coutnum;/i=L.Locate(num);cout查询的元素num位于链表的位置为:iendl;break;case 4:/显示表L.PrintList();coutendl;break;case 5:/退出coutE*itendl;break;default:cout无效的选项n;break;while(choice!=5);return 0;运行与调试在调试程序的过程中遇到什么问题,是如何解决的?进展运行时没有错误,但输出的数组是倒序的,将LinkList methon的for循环的条件更改之后正常运行并到达预想效果。设计了哪些设计数据?测试结果

温馨提示

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

评论

0/150

提交评论