分享

C语言链表结构(1)——链表概念以及链表和数组的区别

 心本心123 2021-12-07

一. 链表结构
1. 什么是链表?
链表是存储数据方式,这种链表的储存方式叫做链式存储。链表存储方式是使得零碎的堆空间使用地址联系在一起。

2. 链表与数组区别?
1)从地址上区别
数组就是在栈空间中连续申请空间,使用变量间接访问空间。
例子:    int A[3]; -> 申请空间
    A[0] A[1] -> 使用变量A间接访问空间, 由于地址是连续的,A[0]不需要保存A[1]的地址,'&A[0]+1'就是&A[1]的地址。

链表就是使用保存下一个节点地址的方式使得零碎的堆空间联系在一起。

                      节点1         --->         节点2         --->         节点3
数据域           无效                           int                             int
指针域          节点2的地址          节点3的地址               NULL                                  -> 由于地址不连续,所以每一个节点都必须保存下一个节点的地址!

2)从存放数据大小范围区别
数组的空间必须前提声明好,并且访问数组时,不能越界,否则就警告!
链表的空间不需要提前声明,如果堆内存足够大,则链表的空间可以无限延伸下去。

二. 链表的种类
1. 什么是传统链表?
传统链表: 单向链表,单向循环链表,双向链表,双向循环链表  ---->  需要用户自己写增删该查的过程。

2. 什么是非传统链表?
非传统链表: 内核链表  ----->  增删改查过程已经在linux头文件中写好的了,用户直接调用即可。

3. 设计链表节点
由于链表节点需要数据域以及指针域(存放着不同类型的数据),所以将每一个节点设计成一个结构体。
结构体模型:
struct data{
  /* 数据域 */
  ...

  /* 指针域 */
  ...
};

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多