双向链表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双向链表相关的知识,希望对你有一定的参考价值。

   双向链表的概念比较简单,只是在之前单链表的的基础上,每个结点多增加了一个指向直接前驱的指针。双向链表的存储结构定义如下:

typedef struct DulNode{

    ElemType data;
    struct DulNode *prior;
    struct DulNode *next;
}DulNode, *DuLinkList;

   双向链表的操作基本上和单链表的操作一模一样。这里,实现一下链表元素的插入操作。比如,插入一个元素s,s之前一个结点是p。那么,只要把s的直接前驱指针指向p,把s的直接后继指针指向p的指向。然后,把p的直接后继指针指向s,把s的下一个结点的直接前驱指针指向s。代码如下:

s->prior = p;
s->next = p->next;
p->next = s;
p->next->prior = s;

   元素的删除操作与元素的插入操作类似。假设删除元素p。代码如下:

p->prior->next = p->next;
p->next->prior = p->prior;
free ( p );    //释放p结点


本文出自 “梵高说我脑子有病” 博客,请务必保留此出处http://chen0547.blog.51cto.com/12489941/1967268

以上是关于双向链表的主要内容,如果未能解决你的问题,请参考以下文章

带头节点的双向链表

《链表》之带头双向循环链表

7L-双线链表实现

代码模板实现双向链表的去重拼接合并排序

数据结构之带头结点的循环双向链表详细图片+文字讲解

双向链表 - 是啥导致我的代码引发编译器错误,我该如何解决?