美文网首页
关于双链表在p节点之后插入一个新节点的理解

关于双链表在p节点之后插入一个新节点的理解

作者: 假程序员 | 来源:发表于2018-10-24 23:40 被阅读0次

假设节点p的后继节点为q,q的前驱节点为p;现要求,只使用p节点,向p之后插入一个新节点s;

即当前状态为:

p.next = q;

q.prior = p;

修改后的状态为:

p.next = s; s.next = q;

q.piror = s; s.piror = p;

可分四种思想来插入s:

第一种:先使s.next指向q,然后p.next指向s,这样p与q的后继连接断开;接着s.next.piror指向s,s.piror指向p,这样q的前驱节点断开;即实现了插入;

具体代码为:s.next = p.next;p.next=s;s.next.piror=s;s,piror=p;

第二种:先断q的前驱节点,再断p的后继节点;

具体代码为:p.next.piror=s;s.piror=p;s.next=p.next;p.next=s;

第三种:先使s.next指向p.next,然后使s.piror指向p=q.piror,这样原双聊表功能正常,通过s可以后继到达q,通过s可以前驱到达p;然后p.next指向s,再s.next.piror指向s,这样就断开了原双链;

具体代码为:s.next=p.next;s.piror=p;p.next=s;s.next.piror=s;

或:s.next=p.next;s.piror=p;p.next.piror=s;p.next=s;

第四种:先s与q相连,然后p与s相连;

具体代码为:p.next.piror=s;s.next=p.next; s.piror=p;p.next=s;

相关文章

  • 关于双链表在p节点之后插入一个新节点的理解

    假设节点p的后继节点为q,q的前驱节点为p;现要求,只使用p节点,向p之后插入一个新节点s; 即当前状态为: p....

  • LinkedList

    链表节点 添加方法 在链表结尾插入新节点 将新节点作为链表的第一个节点 添加方法就写这么多了,有兴趣的自己看其他的...

  • 数据结构和算法面试

    1、双链表指定节点后插入一个节点、删除指定节点。 2、链表反转。 3、二分查找 4、赫夫曼编码原理 5、队列和栈的...

  • 极客时间数据结构与算法之美笔记7

    链表节点插入 链表节点删除 上述两个链表操作,对于空节点或者最后一个节点场景,会有异常。 带有头节点(哨兵节点)的...

  • 反转链表

    思路1: 新建一个链表,把list每个节点插入在新链表的头部。此新链表即是所求 LNode*reverseLink...

  • 如何正确写出链表代码

    本文首发于 LOGI'S BLOG,由作者转载。 引入哨兵 以单链表的插入和删除为例,在节点 p 后插入节点 s ...

  • 链表

    节点类 除双向链表外的节点类 双向链表的节点类 单链表 每个节点只指向下一个节点单链表的操作类 双端链表 每个节点...

  • 链表

    一个链表节点的结构 链表 Redis的链表 双端:链表节点带有prev和next指针,获得节点的前置或后置节点复杂...

  • 优先级队列中采用的链表结构分析

    1、向链表尾部增加一个节点 对应代码: 2、向链表头部删掉一个节点 对应代码: 3、向链表指定的节点前插入一个节点...

  • 5.2. 在循环单链表的末尾插入节点

    在循环单链表的末尾插入节点有两种情况。 第一种情况:将节点插入空链表中,第一种情况:将节点插入非空链表中。首先,使...

网友评论

      本文标题:关于双链表在p节点之后插入一个新节点的理解

      本文链接:https://www.haomeiwen.com/subject/srsqpxtx.html