操作如下
① s>prior=p>prior;
② p>prior>next=s;
③ s>next=p;
④ p>prior=s;
注意对于双向链表由于有前驱和后继指针插入时要修改四个指针并且指针操作的顺序虽然不是唯一的但也不是任意的操作①必须要放到操作④的前面完成否则*p的前驱结点的指针就丢掉了请读者理解清楚每条指针操作的含义
双向链表中结点的删除
设p指向双向链表中某结点删除*p
操作示意图如图所示
操作如下
①p>prior>next=p>next;
②p>next>prior=p>prior;
free(p);
从图上可以看出断开p>prior>next和p>next>prior后我们仍然能够找到p 的前驱和后继所以①②步可以调换
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []