




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
班级:计算机13-2 学号:1 姓名: 成绩:_实验二 单链表操作验证一、 实验目的1) 掌握线性表的链接存储结构;2) 验证单链表及其基本操作的实现;3) 进一步掌握数据结构及算法的程序实现的基本方法。二、 实验内容1) 用头插法(或尾插法)建立带头结点的单链表;2) 对已建立的单链表实现插入、删除、查找等基本操作。三、 设计与编码a) 本实验用到的理论知识模板类、多文件系统,链表的操作b) 算法设计参见课本数据结构(C+版)c) 编码将算法转化为c+程序,设计主函数完成对各成员函数的调用。源代码:/LinkList.h#ifndef _LINKLIST_H#define _LINKLIST_H#include using namespace std;template struct Node T data;struct Node*next;template class LinkList Node*first; /单链表的头指针public:LinkList(T a,int n); /建立有n个元素的单链表LinkList(); /析构函数void CreateList(int n); void Insert(int i,T x); /在单链表中第i个位置插入值为x的节点T Delete(int i); /在单链表中删除第i个节点int Locate(T x); /求单链表中值为x的序号void PrintList(); /遍历单链表,按序号依次输出个元素;template LinkList:LinkList(T a,int n) first=new Node;first-next=NULL; /初始化一个空链表for ( int i=n; i=0; i-) Node *s;s=new Node;s-data=ai;s-next=first-next; /为每个数组元素建立一个结点first-next=s; /插入到头结点之后 /构造函数,创建一个新的链表template LinkList:LinkList() Node*p;p=new Node;p=first; /工作指针p初始化while (p) /释放单链表的每一个结点的存储空间Node*q;q=new Node;q=p; /暂存被释放结点p=p-next; /工作指针p指向被释放结点的下一个结点,使单链表不断开delete q; /析构函数,释放空间template void LinkList:Insert(int i,T x) Node*p;p=new Node;p=first; /工作指针p初始化int j=0;while (p&jnext; /工作指针p后移j+;if (!p) throw位置;else Node*s;s=new Node;s-data=x; /向内存申请一个结点s,其数据域为xs-next=p-next; /将结点s插入到结点p之前p-next=s; /插入元素到位置itemplate T LinkList:Delete(int i) Node*p,*q;T x;p=new Node;p=first;int j=0; /工作指针p初始化while (p&jnext;j+;if (!p | !p-next)throw位置; /结点p不存在或结点p的后继结点不存在else q=p-next;x=q-data; /暂存被删结点p-next=q-next; /摘链delete q;return x; /删除位置i的函数template int LinkList:Locate(T x) Node*p;p=new Node;p=first-next;int j=1;while (p&p-data!=x) p=p-next; /工作指针p后移j+;if (p)return j;elsereturn 0; /查找template void LinkList:PrintList() Node*p;/设置工作指针p=first-next;/从首元结点开始遍历int i=1;/元素位序while(p)coutdatanext;i+;coutendl; /遍历显示链表#endif/LinkList.cpp#include #include Windows.h#include LinkList.husing namespace std;char pause;/typedef 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:/在指定位置插入元素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:/退出coutExitendl;break;default:cout无效的选项n;break;while(choice!=5);return 0;四、 运行与调试a) 在调试程序的过程中遇到什么问题,是如何解决的?进行运行时没有错误,但输出的数组是倒序的,将LinkList methon内的for循环的条件更改之后正常运行并达到预想效果。b) 设计了哪些设计数据?测试结果是什么
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通讯电子技术试题及答案
- 2025商业地产租赁合同范本
- 2025年春季部编版初中数学教学设计八年级下册第1课时 菱形的性质
- 2025设备购买协议合同范本
- A1 自愿离婚协议书示范文本
- 知识题库-人社练兵比武劳动竞赛试题及答案(二十一)
- 公园出入口课件
- 《2025协商解除劳动合同协议》
- 搜课件模板app无删减
- 揭阳安全知识培训课件平台
- DGTJ 08-60-2017 机械式停车库(场)设计规程
- 腰部疾病的健康宣教
- 水文地质风险评价方法-洞察分析
- 小学英语与美术结合的实践活动方案
- 输变电工程施工质量验收统一表式(变电工程土建专业)
- 零星维修工程施工方案
- 结直肠腺瘤中西医结合防治指南-公示稿
- 电动车充电应急处置预案
- 医疗护理员培训机构申报表
- 半导体器件的干法刻蚀技术考核试卷
- 农商行贷款合同(2024版)
评论
0/150
提交评论