};
#endif
【说明】只完成了最重要的insert和remove函数和最具特点的prior()函数,其他的没有重新实现。所以,你在这里使用单链表的其他方法,我不保证一定正确。并且,这里的指针类型转换依赖于编译器实现,我也不能肯定其他的编译器编译出来也能正确。对于让不让prior返回头节点的data,我考虑再三,反正用first();get();这样的组合也能返回,所以就不在乎他了,所以要是用prior遍历直到返回null,就会将头节点的data输出来了。
【补充】至于双向循环链表,也可以从这个双向链表派生(仿照派生循环链表的方法);或者从循环链表派生(仿照派生双向链表的方法),就不一一举例了(再这样下去,我就真闹心的要吐血了)。至此,可以得出一个结论,链表的各种结构都是能从单链表派生出来的。换句话说,单链表是根本所在,如果研究透了单链表,各种链式结构都不难。
一小段测试程序
void dbllisttest_int()
{
dbllist<int> a;
for (int i = 10; i > 1; i--) a.insert(i);
for (i = 10; i > 1; i--) cout << *a.next() << " ";
a.first();
cout << endl;
cout << *a.next() << endl;