Advertisement

双链表进化:优化插入算法

阅读量:

(注意:此处第一个节点的bwd为NULL,最后一个节点的fwd为NULL。)

将一个节点添加至双链表中,存在多种情形:

1、在链表中间位置插入

2、在链表起始位置插入

3、在链表末尾位置插入

4、原链表为空的情况,此时相当于同时在起始与末尾位置插入。

对于每种情况,均需调整4个指针:

在第1和第2种情形中,新节点的fwd字段应指向当前链表中的后续节点,而该后续节点的bwd字段则需指向新插入的节点。

在第3和第4种情形中,新节点的fwd字段应设置为NULL,并且根节点的fwd指针需指向该新节点。

在第1和第3种情形下,新节点的bwd字段应指向当前链表中的前驱节点,同时该前驱节点的fwd字段也应指向新加入的节点。

在第2和第4种情形下,新加入的节点其bwd字段应设为NULL,并且根节点的fwd指针应当指向这个新的节点。

  • 版本一:
复制代码
 #define TRUE 1

    
 #define FALSE 0
    
 #define NUL '\0'
    
  

全部评论 (0)

还没有任何评论哟~