[程設] 串列(Linked-list)的觀念
先來舉個例子
如果家裡有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)
推
03/14 22:21, , 1F
03/14 22:21, 1F
推
03/15 03:03, , 2F
03/15 03:03, 2F
推
03/17 20:03, , 3F
03/17 20:03, 3F
推
03/17 21:49, , 4F
03/17 21:49, 4F
推
03/19 17:36, , 5F
03/19 17:36, 5F
→
04/13 00:30, , 6F
04/13 00:30, 6F
推
04/13 05:34, , 7F
04/13 05:34, 7F