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

一. 链表结构

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值