> 文章列表 > 2.3.5双链表

2.3.5双链表

2.3.5双链表

链表vs双链表

 就是既有前驱指针也有后继指针,由line改为double。

 

 

 双链表的插入怎么实现?

 s->next=p->next;

 p->next->prior=s

 s->prior=p    //把p赋给s的前驱指针指向的位置

 p->next=s;

 如果p刚好是最后一个元素。

 p->next->prior=s  //会出现前驱指针空指针的错误

 就不用执行把s赋给NULL的前驱指针指向的位置。

这就是p结点之后的插入操作。

双链表的删除

 p->next=q->next

 q->next->prior=p   //把p赋给q的next指针指向的位置的前驱指针指向的位置

释放q。

同样如果删除最后一个元素‘

 

如何销毁一个双链表

 

双链表的遍历

so easy

 按位查找(计数器)进行遍历

 

 按值查找

进行值的对比

 多了一个前驱的指针(最后一个节点,需要特殊处理)