欢迎使用CSDN-markdown编辑器

#define Posi(T) listNode<T>*//列表节点位置
template <typename T>
struct listNode{//列表节点模板类(以双向链表形式实现)
T data;//数值
Posi(T) pred;//前驱
Posi(T) succ;//后继
listNode() {}//针对header和trailer的构造
listNode(T e,Posi(T) p = NULL,Posi(T) s = NULL)
:data(e),pred(p),succ(s) {}//默认构造器
Posi(T) insertAsPred(T const& e);//前插入
posi(T) insertAsSucc(T const& e);//后插入
};
  • 列表内容

template int List::deduplicate(){//剔除无序列表中的重复节点
if(_size < 2)return 0;//平凡列表自然无重复
int oldSize = _size;//记录原模板
Posi(T) p = first(); Rank r = 1;//p从首节点起
while ( trailer != ( p = p->succ) ){//依次直到末节点
Posi(T) q = find(p->data, r, p);//在p的r个(真)前驱中,查找与之雷同者
q ? remove(q) : r++;//若的确存在,则删除之;否者秩递增——可否(remove(p))
}//assert:循环过程中的任意时刻,p的所有前驱互不相同
retuen oldSize - _size;//列表规模变化量,即被删除元素总数
}//正确性及效率分析的方法与结论,与Vector::deduplicate()相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值