首页 > 其他 > 详细

双向链表

时间:2017-09-21 09:33:11      阅读:223      评论:0      收藏:0      [点我收藏+]

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

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

双向链表

原文:http://chen0547.blog.51cto.com/12489941/1967268

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!