作者pk873 (P.K)
看板NTUE-CS105
标题[程设] 串列(Linked-list)的观念
时间Thu Mar 14 02:08:50 2013
先来举个例子
如果家里有2000元的10元铜板
你会将2000元一次带出去以备不时之需吗?
又或者你会看要使用多少而带多少出去?
以下为分析
1.一次全带出去虽然很重,但就不用回家补给
2.用多少带多少身边负担比较轻,但没钱时就必须回家拿
除此之外若家里有人临时也要用钱
你把2000元都拿走了,是否他就会没钱可用?
--
以上的例子就类似於使用阵列(Array)与串列(Linked-list)的问题
"串列(Linked-list)"可说是相对於"阵列(Array)"的一种储存资料的结构
还记得阵列的特徵吗?
1.一块连续的记忆体空间
2.各个记忆体空间的资料型别都是相同的
(即 int Arr[10]; 是宣告10个资料型别为整数(int)的连续空间)
3.利用索引值(index)让使用者方便存取其中特定的空间
有着如此的设计,就不用宣告大量的变数来储存资料(EX: int a,b,c...)
--
但是阵列有着一个
"重大的缺点"
"已被配置出来的阵列无法再被扩充"
意思就是int Arr[10]就是请10个空间出来
如果要使用到10个以上的空间,这样就会出现问题
因此空间的使用就不灵活
而串列(Linked-list)就可以解决这样的情况
--
串列的精神就是要使用多少,才请出多少个空间出来
所以串列的特徵为
1.不必为连续的空间
2.单个空间结构里分为存资料与存指标(位址)两种
3.读取资料都必须从头开始搜寻
在这样的设计下,空间运用的灵活度就大幅提高
可随意扩充与减少
但因为没有索引值的辅助,因此程式撰写就会变比较复杂
--
总结
当资料最大空间不太需要扩充并且不在意空间的浪费时
我们建议使用
阵列
当资料最大空间无法确定并要精确控制空间的使用时
建议就使用
串列
所以身为一个程式设计师
必须了解程式的需求是如何
再去决定使用的资料结构
大家就慢慢体会吧 XD
--
另外关於串列的结构
我很喜欢拿生活中的经验来比喻
有玩过RO的人还记得游戏中地图是怎麽样的吗?
就是一张地图透过传送点传到下一张地图
串列就是像这样
不知道有玩过的人是否忽然就有感觉多了 XD
有些东西要先感觉一下他的精神是如何才会好学
大家加油!!!!
--
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄
▄▄▄▄▄▄
▄▄▄▄▄▄▄▄▄▄无数次实验证明▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄
▄▄▄
▄▄▄▄▄▄▄▄▄▄ 机会是自己撞出来的 ▄▄▄▄▄▄▄▄
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄
▄▄
________ █████████████████████████
▌ █ ██▌
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.176.40.41
※ 编辑: pk873 来自: 180.176.40.41 (03/14 02:22)
1F:推 alex60611 :推一个 03/14 22:21
2F:推 CaptainWill :推喔 03/15 03:03
3F:推 mikeing27 :pk发文 推推 03/17 20:03
4F:推 fonmon77 :骗P币= = 03/17 21:49
5F:推 dreamivy :推 蛮具体的 03/19 17:36
6F:→ aabbcba :开始练串列前先把指标与阵列与函数的关系搞懂。 04/13 00:30
7F:推 daniel225 :原PO好帅 04/13 05:34