列表是与向量相对应的另一种线性结构。与向量的顺序式存储不同,列表采用的是有每个节点间的相互引用构成的链式存储。列表的节点包含了数据域和指针域两部分。下面具体介绍抽象数据类型——列表节点(ListNode)
抽象数据接口(ADT):
1.data():读取当前节点的数据
2.pred():读取当前节点的前驱
3.succ():读取当前节点的后继
4.insertAsPred():作为当前节点的前驱插入
5.insertAsSucc():作为当前节点的后继插入
列表节点模板类(ListNode):
typedef int Rank; //定义秩
#define ListNodePosi<T> ListNode<T>* //标记列表当前位置
template <typename T> //模板类
struct ListNode //双链表形式
{
/*--成员变量--*/
T data; //节点数据
ListNodePosi<T> pred, succ; //前驱、后继
/*--构造函数--*/
ListNode() {} //针对header与tailor节点
ListNode(T e, ListNodePosi<T> p = NULL, ListNodePosi<T> s = NULL) //默认
: data(e), pred(p), succ(s){}
ListNodePosi<T> insertAsPred(T const &e); //作为当前节点的前驱插入</