Data|双向链表插入结点分析和总结

主要是针对通用的插入结点时所需要注意的事项,对于深入了解具有指导意义。
可以通过画图来分析,会有种豁然开朗的感觉。
typedef struct DuLNode
{
ElemType data;
DuLNode *prior,*next;
}DuLNode,*DuLinkList;
1. 如果在链表中插入时仅仅指出直接前驱结点p,钩链时必须注意先后次序是: “先右后左”。部分语句组如下:
s->next = p->next; p->next->prior = s;
p->next = s; s->prior= p; /*钩链次序非常重要*/
【Data|双向链表插入结点分析和总结】2. 如果在链表中插入时仅仅指出直接后继结点p,钩链时必须注意先后次序是: “先左后右”。部分语句组如下:
s->prior = p->prior; p->prior->next = s;
s->next = p; p->prior = s; /*钩链次序非常重要*/
3. 如果插入时同时指出直接前驱结点p和直接后继结点q,钩链时无须注意先后次序。部分语句组如下:
p->next = s; s->next = q;
s->prior = p; q->prior = s;

    推荐阅读