NTUE-CS101 板


LINE

什麼是串列 ? 他是要幹麻用的 ? 我突然發現我跟老師好像都沒有跟你們仔細提到這個問題 串列 簡單來說就是一堆資料串在一起 ( 康熙字典有云:「串者,與貫通也。」 ) 先想像之前學過的陣列 陣列就像表格一樣 當你需要存很 n 筆資料的時候 不需要宣告 int a,b,c,d, .... n; 只要宣告 int a[n]; // 這個語法只適用 dev c++ 電腦就會在記憶體內分配連續 n 個int的空間給你 陣列很好用 只要給電腦 初始位置index 就可以當一般變數使用 ex: a[5]=3; a是初始位置 5是index 3是存進去的資料 但是陣列因為先天上的設計 - 連續空間 所以遇到一些問題的時候很棘手 例如 你要在 a[4] a[5] 之間插入一筆資料 必須要把 a[5] 以後的東西往後推 ( a[n] 存到 a[n+1] ) 再把 新的資料放到 a[5] 另外一個困難就是 如果要刪除 a[3] 要把 a[3] 以後的資料 往前推一格 ( a[n+1] 存到 a[n] ) 要解決上面的問題 這時候就是串列派上用場的時候了 串列只有起始位置 他沒有 index 陣列有 起始位置 每筆資料有 這個資料 還有 index 串列有 起始位置 每筆資料有 這個資料 還有 下一個人的記憶體位址(用指標存) 看下面的圖 ┌─┬┐ ┌─┬┐ ┌─┬┐ head →│1│─→│5│─→│8│─→ NULL     └─┴┘ └─┴┘ └─┴┘ head 就是起始位置 就好像陣列 int a[10]裡面 a 是一個指標指向起始位置一樣 改成這樣之後 插入刪除資料就變的很輕鬆 插入資料 ┌─┬┐   ┌─┬┐ ┌─┬┐ head →│1│─┐ ┌│5│─→│8│─→ NULL     └─┴┘│ │└─┴┘ └─┴┘      ┌──┘ └┐      │ ┌─┬┐│   └→│3│─┘        └─┴┘ 要把 3 插到 1, 5中間 就把 1 接到 3, 把 3 接到 5, 也就是說 把前面一個人接到新的點, 把新的點接到後面的點 刪除資料 ┌─┬┐   ┌─┬┐ ┌─┬┐ head →│1│───→│5│─→│8│─→ NULL     └─┴┘X X└─┴┘ └─┴┘      ┌──┘ └┐      │ ┌─┬┐│   └→│3│─┘        └─┴┘ 要把 1, 3, 5 的 3 刪除 只要把 1 接到 5 就好了 也就是說 把前面一個人 接到 要刪除的點後面的點 那有了串列 還要陣列幹嘛? 陣列因為是連續空間 所以他的優點是 速度快 知道他的長度是多少 串列是不連續空間 所以速度較慢 長度要從head跑到NULL才知道長度 優點是 資料常常會增減的時候很方便 -> 是什麼意思? 就好像要動指標 a 的資料的時候 要用 *a 要動指標a的class成員的時候 要用 a-> 所以 a->link()的意思是說 呼叫 a指標所指的那個物件的link函數 為什麼有時候用 head=p; 不用 head->link(p); 看一下新增節點(插入)的程式碼 如果新的點要放在最前面的時候 不可以直接 head->link(p); 因為這樣是 head所指到的人 鏈結到p 這樣會導致 p變成第二個人 要改成 head = p; ( head 存 p 裡面存的位址 也就是說 head 指到 p指到的那個物件 ) 這就是 if(q2==NULL) head=p; else q2.link(p); 的原因 ( 我們在while外面指定 q1一開始=head q2一開始=NULL ) 最後要說 基本上期中考應該就是串列了 考試帶著課本還有之前交的作業 看懂自己寫或是參考來的程式碼 每一行在幹麻 如果題目出現變化 你要改哪裡怎麼改 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.15.209
1F:推 linjrming:懶人可以用vector 不過期中考這樣應該不會過XD 04/09 17:53
2F:推 chchwy:vector就是陣列XD 04/09 19:02
3F:推 linjrming:vector可以從中間插入耶 >///< 04/09 19:10
4F:推 jonas518:真的假的..不過還是自己寫比較好 04/09 19:18
5F:推 rockmyangel:期中要掰掰了哭哭 04/09 22:45
6F:推 chchwy:能做不代表有效率呀 vector插中間是O(n) 04/10 13:59
7F:→ yantchen:linked list擦頭(亮) 擦中間 擦屁股 都是 O(c)=O(1) 喔 04/10 17:31
8F:推 linjrming:對啊 所以我才說是懶人用的(攤手 04/10 21:46







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP