通过定义的内部结构link实现节点的双向链接,该类完成对双向链表的构造,控制对节点的操作,包括删除,替换,插入,追加,清除链表等,此外该类还提供了内部公有迭代类iterator和const_iterator;这两个类用于实现对链表对象DLListBase的遍历,前者能够实现对链表内元素的修改,后者不能对链表内元素修改。为了更好的实现遍历,DLListBase中还提供了first(),end()成员函数分别生成指向链表第一个元素和最后一个元素的迭代器iterator或const_iterator。另外该类屏蔽了复制构造函数和赋值构造函数,因此不能通过以下方式进行DLListBase类对象的声明: DLListBase llistA; DLListBase llistB(llistA); //这是不允许的,因为复制构造函数被屏蔽 DLListBase llistC=llistA; //也是不行的,赋值构造被屏蔽三个私有成员变量link* first_,link* last_及label nElmts_分别为指向第一个元素的指针,指向最后一个元素的指针和链表中元素的个数。构造函数有两个一个为默认构造函数,其将三个私有成员变量均设为0,另外一个以link* a作为函数参数,将first_和last_都设为a,并且将a注册即a->prev_=a;a->next_=a; 私有成员变量nElmts_=1。成员函数clear()将清除链表,其并不一一删除各元素,只是将自身三个私有变量的值重置为0,其他工作交由link的派生类或程序员来完成。

评论