作者jacky1989 ()
看板C_and_CPP
標題[閒聊] linked list重要性
時間Wed Dec 7 23:40:43 2016
如題
這篇純閒聊,無學術交流,不喜者,現在就可以左轉了
最近在工作上遇到一些比較麻煩的問題
我要去檔案裡抓一些特定的資料,但是我不知道這些資料到底有多少
因此我沒辦法預先設定陣列大小或變數多寡
這時候就突然想到,以前老師教的,資料串結(linked list)
就大家常看到的struct XXX{};
以前老師在教的時候,都不覺得這個有用
只覺得這到底要幹嘛,啊我用陣列就好啦!!!
結果現在超常用到......
只能說,資料串結很有用,尤其面對未知的資料量時,整個大神的概念
就呼籲大家不要輕易放棄任何一種技術囉~~
因為你不知道哪一年的哪一天你會用到它
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.55.135
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1481125247.A.D2C.html
1F:推 chuegou: 可以抽掉中間的資料我覺的比較重要 12/07 23:45
就不用預先知道在哪裡,只需要搜尋特定關鍵字就可以了
整個可以變成萬用程式阿
2F:推 deo2000: 純C的環境嗎?要不然STL超好用 12/07 23:45
是純C喔!!
※ 編輯: jacky1989 (61.231.55.135), 12/07/2016 23:47:01
3F:→ Caesar08: 沒有要從中間插入,為什麼不動態宣告array? 12/07 23:53
因為就像你說的,有需要從中間插入的狀況,我讀的資料有可能不是連續性的
還有一個狀況,我不知道到底需要讀多少資料
這樣是不是也可以用動態陣列呢?
※ 編輯: jacky1989 (61.231.55.135), 12/07/2016 23:57:04
4F:推 boss0405: 我是很常用cicular linked list來作queue,很方便 12/08 00:00
5F:→ Caesar08: 不知道size也可以動態宣告array。除非你要頻繁的從中間 12/08 00:01
6F:→ Caesar08: 插入data,不然array(vector)會比list好很多 12/08 00:02
所以今天我有兩個檔案
第一個檔案要讀n筆資料
第二個檔案要讀m筆資料
我只知道每個資料的長度是20個byte,但是不知道n跟m為多少
我依然可以使用動態宣告來處理囉?
※ 編輯: jacky1989 (61.231.55.135), 12/08/2016 00:06:26
7F:→ Caesar08: 你用list不也是要額外allocate memory 12/08 00:33
8F:→ Caesar08: vector只不過是allocate比較多的memory罷了 12/08 00:34
嗯.....我用List還有另一個用意
因為我的資料是一堆小資料的集合,我認為用結構來處理比較合適
不過C大的建議,我會去survey一下
如果有疑問,還請C大不吝指教,感謝
※ 編輯: jacky1989 (61.231.55.135), 12/08/2016 00:35:29
9F:推 EdisonX: 結構也可以用成 array 型式 @@ 12/08 00:37
10F:→ firejox: 要多一點效率就固定多要一點記憶體 12/08 00:40
11F:→ firejox: 像STL的deque就是會固定多要一點(沒記錯的話 12/08 00:42
12F:→ Caesar08: MSVC與GCC的deque、vector都會allocate比要求的memory多 12/08 00:45
13F:→ Caesar08: 說錯了,我說的是自動增長的情況,不是主動要求的情況 12/08 00:46
14F:→ firejox: allocate的量不一樣阿deque跟vector,增長的時候 12/08 00:53
15F:推 stupid0319: 像是MMORPG,玩家跟怪物等都是用linked list來串連 12/08 01:02
16F:推 CoNsTaR: 要是你寫 fp 語言你就會發現資料結構充滿整個程式… 12/08 01:27
17F:→ CoNsTaR: 除了結構和函數之外沒有其他東西 12/08 01:28
18F:→ CoNsTaR: 補充個,連 Int, Char 等等… 都是資料結構 12/08 13:12
19F:→ CoNsTaR: 沒有 primitive type 這種東西 12/08 13:12