实验2链表验证实验.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验2链表验证实验

班级:计算机13-2 学号:1 姓名: 成绩:_________实验二 单链表操作验证实验目的掌握线性表的链接存储结构;验证单链表及其基本操作的实现;进一步掌握数据结构及算法的程序实现的基本方法。实验内容用头插法(或尾插法)建立带头结点的单链表;对已建立的单链表实现插入、删除、查找等基本操作。。设计与编码本实验用到的理论知识模板类、多文件系统,链表的操作算法设计参见课本《数据结构(C++版)》编码将算法转化为c++程序,设计主函数完成对各成员函数的调用。源代码://LinkList.h#ifndef _LINKLIST_H#define _LINKLIST_H#include iostreamusing namespace std;template class Tstruct Node {T data;struct NodeT*next;};template class Tclass LinkList {NodeT*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 class TLinkListT::LinkList(T a[],int n) {first=new NodeT;first-next=NULL; //初始化一个空链表for ( int i=n; i=0; i--) {NodeT *s;s=new NodeT;s-data=a[i];s-next=first-next; //为每个数组元素建立一个结点first-next=s; //插入到头结点之后}} //构造函数,创建一个新的链表template class TLinkListT::~LinkList() {NodeT*p;p=new NodeT;p=first; //工作指针p初始化while (p) { //释放单链表的每一个结点的存储空间NodeT*q;q=new NodeT;q=p; //暂存被释放结点p=p-next; //工作指针p指向被释放结点的下一个结点,使单链表不断开delete q;}} //析构函数,释放空间template class Tvoid LinkListT::Insert(int i,T x) {NodeT*p;p=new NodeT;p=first; //工作指针p初始化int j=0;while (pji-1) {p=p-next; //工作指针p后移j++;}if (!p) throw位置;else {NodeT*s;s=new NodeT;s-data=x; //向内存申请一个结点s,其数据域为xs-next=p-next; //将结点s插入到结点p之前p-next=s;}} //插入元素到位置itemplate class TT LinkListT::Delete(int i) {NodeT*p,*q;T x;p=new NodeT;p=first;int j=0; //工作指针p初始化while (pji-1) { //查找第i-1个结点p=p-next;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 class Tint LinkListT::Locate(T x) {NodeT*p;p=new NodeT;p=first-next;int j=1;while (pp-data!=x) {p=p-next; //工作指针p后移j++;}if (p)return j;elsereturn 0;} //查找template class Tvoid LinkListT::PrintList() {NodeT*p;//设置工作指针p=first-next;//从首元结点开始遍历int i=1;//元素位序while(p){coutp-data\t;p=p-next;i++;}coutendl;} //遍历显示链表#endif//LinkList.cpp#include iost

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档