1.列表节点ADT接口
操作接口 | 功能 |
---|---|
data() | 当前节点所存数据对象 |
pred() | 当前节点前驱节点的位置 |
succ() | 当前节点后继节点的位置 |
insertAsPred(e) | 插入前驱节点,存入被引用对象e,返回新节点位置 |
insertAsSucc(e) | 插入后继节点,存入被引用对象e,返回新节点位置 |
typedef int Rank
#define ListNodePosi(T) ListNode<T>* //列表节点位置
template <typename T> struct ListNode {
T data; ListNodePosi(T) pred; ListNodePosi(T) succ; //数值、前驱、后继
ListNode () {}
ListNOde (T e, ListNodePosi(T) p = NULL, ListNodePosi s = NULL) : data(e), pred(p), succ(s) {}
ListNodePosi(T) insertAsPred(T const& e); //紧靠当前节点之前插入新节点
ListNodePosi(T) insertAsSucc(T const& e); //紧靠当前节点之后插入新节点
};
2.列表ADT接口
操作接口 | 功能 |
---|---|
size() | 报告列表当前的规模(节点总数) |
first()、last() | 返回首、末节点的位置 |
insertAsFirst(e) insertAsLast(e) | 将e当作首、末节点插入 |
insertA(p, e) insertB(p, e) | 将e当作节点p的直接后继、前驱插入 |
remove(p) | 删除位置p处的节点,返回其数值 |
disordered() | 判断素有节点是否已按非降序排列 |
sort() | 调整各节点的位置,使之按非降序排列 |
find(e) | 查找目标元素e,失败时返回NULL |
search(e) | 查找目标元素e,返回不大于e且秩最大的节点(有序列表) |
deduplicate() | 剔除重复节点 |
uniquify() | 剔除重复节点 (有序列表) |
traverse() | 遍历并统一处理所有节点,处理方法由函数对象指定 |