您当前的位置: 首页 >  数据结构
  • 2浏览

    0关注

    880博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【大话数据结构C语言】9 双向链表

CodeAllen嵌入式编程 发布时间:2020-10-14 00:29:02 ,浏览量:2

系列文章参考资料为《大话数据结构》,源码为个人私有,未经允许不得转载 技术交流群或资料添加微信号:CoderAllen,回复关键字即可

双向链表是在单链表的每个结点中,在设置一个指向其前驱结点的指针域

其代码表示:

/*线性表的双向链表存储结构*/
typedef struct DulNode
{
        ElemType data;
        struct DuLNode *prior;      /*直接前驱指针*/
        struct DuLNode *next;       /*直接后继指针*/
} DulNode, *DuLinkList;

同理,双向链表的空循环表为: 在这里插入图片描述

非空的循环的带头结点的双向链表: 在这里插入图片描述

双向链表既然是比单链表多了可以反向遍历查找等数据结构,也就付出了一些代价,比如在插入和删除的时候,需要更改两个指针变量

操作不复杂,不过顺序非常重要 在这里插入图片描述

其步骤是:

s - >prior = p;             /*把p赋值给s的前驱,如图中①*/
s -> next = p -> next;      /*把p->next赋值给s的后继,如图中②*/
p -> next -> prior = s;     /*把s赋值给p->next的前驱,如图中③*/
p -> next = s;              /*把s赋值给p的后继,如图中④*/

同理其删除步骤是:

p->prior->next=p->next;     /*把p->next赋值给p->prior的后继,如图中①*/
p->next->prior=p->prior;    /*把p->prior赋值给p->next的前驱,如图中②*/
free(p);                    /*释放结点*/

--------------------------------------------------------END----------------------------------------------------------- 电子书及源码点击下载

关注
打赏
1665938897
查看更多评论
立即登录/注册

微信扫码登录

0.0387s