假设节点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;