狐狸梦见乌鸦

当坚持成为一种习惯,目标将不在遥远```
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

双向链表

Posted on 2012-08-30 22:16  灬啊U  阅读(165)  评论(0编辑  收藏  举报

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

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

双向链表的结点定义:

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;