实验报告三 线性表的链式存储 班级: 2010XXX 姓名: HoogLe 学号: 2010XXXX 专业: XXXX 2858505197@qq.com 一、 实验目的: (1) 掌握单链表的基本操作的实现方法。 (2) 掌握循环单链表的基本操作实现。 (3) 掌握两有序链表的归并操作算法。 二、 实验内容:(请采用模板类及模板函数实现) 1、线性表链式存储结构及基本操作算法实现 [实现提示] (同时可参见教材 p64-p73页的ADT描述及算法实现及 ppt)函数、类名称等可自定义,部分变量请加上学号后 3位。也可自行对类中所定义的操作进行扩展。 所加载的库函数或常量定义: #include using namespace std; (1)单链表存储结构类的定义: template class LinkList{ public: LinkList(); //初始化带头结点空单链表构造函数实现 LinkList(T a[],int n);//利用数组初始化带头结点的单链表构造函数实现 ~LinkList(); int length(); //求单链表表长算法 T get(int i); //获得单链表中第 i个结点的值算法 int locate(T temp); void insert(int i,T temp); //在带头结点单链表的第 i个位置前插入元素 e算法 T Delete(int i); //在带头结点单链表中删除第 i个元素算法 void print(); //遍历单链表元素算法 bool isEmpty(); //判单链表表空算法 void deleleAll(); //删除链表中所有结点算法(这里不是析构函数,但功能相同) private: Node *head; }; (2)初始化带头结点空单链表构造函数实现 输入:无 前置条件:无 动作:初始化一个带头结点的空链表 输出:无 后置条件:头指针指向头结点。 //初始化带头结点空单链表构造函数实现 template LinkList::LinkList(){ head = new Node; head->next = NULL; } (3)利用数组初始化带头结点的单链表构造函数实现 输入:已存储数据的数组及数组中元素的个数 前置条件:无 动作:利用头插或尾插法创建带头结点的单链表 输出:无 后置条件:头指针指向头结点,且数组中的元素为链表中各结点的数据成员。 //利用数组初始化带头结点的单链表构造函数实现 template LinkList::LinkList(T a[],int n){ head=new Node; head->next=NULL; for (int i=0; i *s=new Node; s->data=a[i]; s->next=head->next; head->next=s; } } (4)在带头结...