以带表头结点的单链表为例,实现的几个函数功能:
(1) 建立函数create:根据一维数组a[n]建立一个单链表,使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂性为O(n)。(此题函数已经提供,不用做)
(2) 定位函数locate:在单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回NULL。
(3) 求最大值函数max:通过一趟遍历在单链表中确定值最大的结点。
(4) 统计函数number:统计单链表中具有给定值x的所有元素。(此题可不做)
(5) 倒置函数reverse: 倒置线性表中元素的顺序。
(6) 整理函数tidyup:在非递减有序的单链表中删除值相同的多余结点。
(7) 合并两个链表mergelists: 输入的链表按照其元素顺序从小到大排序,输出的链表也要求按照元素的大小顺序排列。
#include <iostream>
using namespace std;
template <typename E>
class Link {
public:
E element;
Link *next;
Link(const E& elemval, Link* nextval =NULL)
{ element = elemval; next = nextval; }
Link(Link* nextval=NULL) { next = nextval; }
};
template <typename E>
Link <E> *create(E a[], int n)
//建立函数create:根据一维数