数据结构简单入门/复习(二)-循环链表与双向链表(C语言)

2022/1/23:更新为 Markdown 格式。

循环链表

循环链表是在线性链表的基础上,将最后一个结点的next设置为头指针。即

|empty - first| -> |data1 - second| -> |data2 - head|

双向链表

定义与结构

双向链表是在线性链表的基础上加入一个指向直接前驱的指针变量prior。

define int ElemType          //元素类型设置为int
typedef struct DuLNode{      //链表结构定义
    ElemType data;           //数据域
    struct DuLNode *prior    //直接前驱
    struct DuLNode *next;    //直接后继
}DuLNode;

插入

目的:只知道A与B,A的直接后继是C,将B插入A后C前。

原理:将B的前驱设置为A,后继设置为C,将C前驱设置为B,A后继设置为B

B->prior = A;
B->next = A->next;
A->next->prior = B;
A->next = B;

结点删除

目的:只知道A,删除ABC中的B。

原理:将A的后继设置为C,将B释放,将C的前驱设置为A。

A->next = A->next->next;
free(A->next->prior);
A->next->prior = A;

版权声明:
作者:MWHLS
链接:https://panwj.top/329.html
来源:无镣之涯
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>