[程設] 串列(Linked-list)的觀念

看板NTUE-CS105作者 (P.K)時間12年前 (2013/03/14 02:08), 編輯推噓6(601)
留言7則, 7人參與, 最新討論串1/1
先來舉個例子 如果家裡有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
pk發文 推推
03/17 20:03, 3F

03/17 21:49, , 4F
騙P幣= =
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
原PO好帥
04/13 05:34, 7F
文章代碼(AID): #1HGC2tIg (NTUE-CS105)