智能车制作

标题: 关于链表的心得 [打印本页]

作者: zhuzongzhen    时间: 2015-11-11 10:37
标题: 关于链表的心得
本帖最后由 zhuzongzhen 于 2015-11-11 10:45 编辑

关于链表的一些看法(看完朱老师物联网大讲堂视频后的体会)
链表是个什么东西?它用来做什么用?为什么需要链表?
对于链表,最大的价值就是解决数组的两个缺陷;那么数组有哪两个缺陷呢?首先定义个数组int a[10]={0};在这里我们可以看到,1、只要我们把数组定义好以后,那么这个数组的大小就确定了,之后就无法再更改这个数组的大小了,那么如果这个数组长度不够存我们的数据怎么办?2、还有个缺陷就是只要我们把数组定义好以后,那么数组里面的类型就确定了,而且全部一样。
为了解决上面两个问题,于是就有了链表。如果我们把链表看做一个比较特殊的数组,我们访问数组的内容不是通过下标,而是通过它们之间的链接来访问,相对于数组来说就是访问方式不同了而已,链表的节点就像数组的一个元素。这么想来链表好像似乎很简单的样子了。
那么怎么样能形成链表。我们必须要有一个可以存放数据的空间变量,还要有一个与其他节点形成连接关系的一个变量,这个变量就要用指针来实现。而且要把这两个变量捆绑在一起。那么就只能用结构体了。
所以链表的一个节点的定义为:  structlist_Node
{  int data;
struct list_Node  *Next;
};
只要我这里的结构体指针指向下一个节点,那么这样一直下去直到其中一个指向NULL。就像链条一样。只要我们找到第一个节点的指针,那么整个链表我们都可以知道了,就像数组知道首地址一样。那么我们来看下链表的示意图:
填写图片摘要(选填)


所以只要知道head那么整个链表你就可以随意操作了。如果是数据长度不够,那么我们就插入一个节点就轻松解决了,多了就删掉没用的节点就ok了。
插入一个节点的示意图:
填写图片摘要(选填)



删除一个节点:填写图片摘要(选填)
那么这就是单链表,这种链表有个缺点就是只能从头指针向后访问。
于是乎就有了双向链表。双链表的本质与单链表一样。只是多了一个连接指针而已。​

测试代码:​
填写图片摘要(选填)


测试源代码


填写图片摘要(选填)




作者: zhangjun94    时间: 2015-11-11 15:54
666666
作者: 星舞天涯    时间: 2015-11-11 16:26
膜拜技术大神
作者: 浮华→三生    时间: 2015-11-11 19:01
赞赞赞:
作者: 山广东    时间: 2015-11-12 00:42
:):):):)
作者: 505357619    时间: 2015-11-14 23:22
好东西 必须要顶
作者: 505357619    时间: 2015-11-14 23:27
好东西 必须要顶
作者: fskezhili    时间: 2016-3-20 01:44
膜拜     路过





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2