双向链表

单向链表只有一个指向后继的指针来表示结点间的逻辑关系,因此任意一结点开始找其后继结点很方便,但是要找其前驱结点比较麻烦。

双向链表是用两个指针表示结点的逻辑关系。即增加了一个指向其前驱的指针域,这样形成的链表又两种不同的链,即前驱和后继。因此称为双链表。在双向链表中,根据已知结点查找其直接前驱和指直接后继结点也很方便。

双向链表的结点定义:

typedef  int  elemtype;

typedef  struct   Dnode

{

  struct   Dnode   *prior;

  struct   Dnode   *next;

  elemtype   data;

}Dnode,*Dlinklist;

双向链表的结构图

prior data next

双向链表的插入:

s->data  = x;

s->next  = p;

s->prior = p->prior;

p->prior = s;

s->prior->next = s;

原文地址:https://www.cnblogs.com/zhou2011/p/2664578.html