智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11762|回复: 7
打印 上一主题 下一主题

关于链表的心得

[复制链接]

0

主题

0

帖子

0

精华

注册会员

Rank: 2

积分
84
威望
60
贡献
20
兑换币
10
注册时间
2014-5-9
在线时间
2 小时
毕业学校
西建大
跳转到指定楼层
1#
发表于 2015-11-11 10:37:30 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhuzongzhen 于 2015-11-11 10:45 编辑

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


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



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

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


测试源代码


填写图片摘要(选填)



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-5 04:42 , Processed in 0.075203 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表