Advertisement

双链表插入节点分析与总结

阅读量:

主要针对通用插槽的相关注意事项,在深入理解这类问题时具有重要价值

可以通过画图来分析,会有种豁然开朗的感觉。

定义为 DuLNode 的结构体类型:
{
数据成员为 ElemType 类型;
指针成员 prior 和 next 均为指针类型;
} DuLNode 结构体, * DuLinkList 变量名。

当在链表中进行插入操作仅指定直接前驱结点p时

s->next = p->next; p->next->prior = s;
p->next = s; s->prior= p; /* 钩链次序非常重要 */

如果在链表中插入新结点时仅仅指定了一个后续接点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;

全部评论 (0)

还没有任何评论哟~