安阳给商家做网站推广,全国最好网络优化公司,仿做网站,微信商城小程序怎么做目录 前言
01 什么是链表
02 数组的特点
03 数组的缺点
3.1 删除数组其中一个元素
3.2 数组增加某个节点
04 链表 前言 #x1f3ac; 个人主页#xff1a;ChenPi #x1f43b;推荐专栏1: 《 C 》✨✨✨ #x1f525; 推荐专栏2: 《 Linux C应用编程#xff08;概念…目录 前言
01 什么是链表
02 数组的特点
03 数组的缺点
3.1 删除数组其中一个元素
3.2 数组增加某个节点
04 链表 前言 个人主页ChenPi 推荐专栏1: 《 C 》✨✨✨ 推荐专栏2: 《 Linux C应用编程概念类》✨✨✨ 推荐专栏3: 《链表_ChenPi的博客-CSDN博客》 ✨✨✨ 本篇简介::讲解链表的运行方式和链表和数组的区别 这一节我们来讲解链表。很多很多人看到链表两个字啊就觉得怕其实它不可怕的而且很好用现在我们就来讲解链表
01 什么是链表
它就是一个普通结构体的应用而已。
链表啊它是一个好东西啊之所以能够存在列表这个东西说明它能够帮忙解决一些实际问题。
链表只是一种数据结构。
那所谓的数据结构就是数据存放的思想。
明我们说编程难的并不是c语言本身
而是一些思想。其中链表就是一种数据存放的一种思想。 02 数组的特点
我们以前学过数据存放也可以说数据的一个集合。
学过数组吧大家都对这个数组很熟悉
他非常明白了一个特点是。每一个元素地址。都是连续的。
比如说我们一个数组arr。
int arr[10] {0,1,2,3,4,5,6,7,8,9,10};
其中有10个数据比如说12345678910啊。
它就是在内存连续的一段空间。存放123456 一直到10啊假设这个初始地址是你0x00啊那么第二个是0x0int整形数的大小是四个字节地址是连续的也就是说。最大空间就是10*4 40 数组的特点就是在一个连续的内存空间里面存放着某些特点的数据
这是它的特点啊一种比较特别的数据存储方式 03 数组的缺点
那这样有什么缺点吗
数组的话改其中的数据或者查询数据的话其实还好
但是如果你要增加一个元素呢你要删除一个元素呢
3.1 删除数组其中一个元素
删除一个元素是不是很很困难
数组的地址是连续的
假设说我这个第三个元素被我干掉了。那你该如何处理这个地址空间
它的数据已经变得不连续了。
如果要把右边的数据都往左移
你的运算量就比较大了你要挪动整个数组。 3.2 数组增加某个节点
比如说我要在这个六跟七之间啊加一个11啊怎么办啊
因为他们地址连续的代表这个空间是没有多余的内存的
实际上你要把11存放进来你首先要数到六然后把七八九十往后挪一挪
腾出一个位置给11啊你的内存的开销你的运算量肯定会变大的所以说不灵活
而且数组一开始的时候就把大小给确认了所以说不管是malloc也好还是数组也是都是一口气申请了多大的空间啊他们都存在这个问题不灵活 04 链表
那链表表就很好的解决了这个问题。列表的每一项它都是一个结构体。
struct Node {int value; // 值Node *next; // 下一个节点指针
}; 比如说我现在有一个链表
里面有两项一项是一个整形数的一个数据value
下一个是一个指针struct Node * test 比如说现在有这个结构体1 结构体1里面有个指针我结构体1的指针指向结构体2的地址结构体2的指针指向结构体3的地址也就是说这几个结构体是被串联在一起的 这样子无疑就给整个数据的存储添加了很大的灵活性比如说我现在有这么一串数啊12345。 我先要把三删掉那不很简单吗把二里面存放的地址改成四嘛就完了删就删掉了就一句话
如果要是数组的话呢12345你把3删掉删掉以后这个内存啊数据还得往前挪五个数据还好假设后面有100个数据你都要挪多少次啊啊
如果是链表那我这个后面有100个数据是不是也很好处理啊跟后面的数据没关系吧我只要去变动二里面的指针地址只像是就可以了多灵活是不是那我先要增加一下怎么办呢 同样的我有100个数据我想要在这个这里插入一下怎么办那它的下一个指向它那新的下一个指向这个。链表很灵活
那下一小章我们来正式的来学习链表它是个好东西不要怕它啊学会以后合理的使用它。