Linked Lists

Similar documents
Linked Lists

Microsoft PowerPoint - lecture5

TX-NR3030_BAS_Cs_ indd

团 市 委 首 笔 爱 心 捐 款 及 物 资 已 送 至 芦 山 地 震 灾 区 : 近 日, 团 市 委 从 省 青 少 年 发 展 基 会 获 悉, 团 市 委 为 地 震 灾 区 募 集 的 首 笔 爱 心 捐 款 和 捐 赠 物 资 已 送 至 芦 山 地 震 灾 区 4 月 20 日,

穨japhkesch.PDF

演算法導入、ソート、データ構造、ハッシュ

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

資料結構之C語言重點複習

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

<4D F736F F F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E BBCE6C8DDC4A3CABD5D>

CC213

Explain each of the following terms. (12%) (a) O(n 2 ) (b) protected in C++ language (c) sparse matrix 7. Write








1

電腦設備LP _第九組記憶體規範書

Microsoft Word - 生活禮儀柯友惠981

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目 的 地 後

目 录 第 一 章 电 力 行 业 内 部 控 制 操 作 指 南 概 述... 1 第 二 章 内 部 控 制 规 范 体 系 建 设 与 运 行 第 三 章 内 部 环 境 建 设 第 一 节 组 织 架 构 第 二 节 发 展 战 略 第 三 节

家长讲师团案例之一

01

編輯要旨 一 教育部為了協助本國失學民眾 新住民及 其他國外朋友 有系統的學習華語文的 聽 說 讀 寫 算等識字能力及跨文化 適應 以培養具有基本公民素養的終身學 習者 特別委託新北市政府教育局新住民 文教輔導科團隊編輯本教材 二 依據上述目的 本教材共有六冊 並分為 六級 分級及單元名稱詳如下表

1

Microsoft Word - 第三章第一節第二節.doc

untitled

的 精 准 帮 扶 持 续 扩 大 有 效 投 入, 实 施 项 目 建 设 四 督 四 保 制 度, 积 极 对 接 国 家 重 大 工 程 包 和 专 项 建 设 基 金, 商 合 杭 高 铁 合 安 高 铁 京 东 方 10.5 代 线 等 一 批 重 大 项 目 开 工 建 设, 合 福 高

2012年海南党建第2期目录.FIT)

习 近 平 总 书 记 2016 两 会 新 语 一 年 一 度 的 两 会 已 经 落 下 帷 幕 会 议 期 间, 习 近 平 总 书 记 谈 改 革 聊 民 生, 在 供 给 侧 改 革 打 赢 脱 贫 攻 坚 战 保 护 生 态 环 境 和 实 现 强 军 目 标 等 多 个 方 面 发 表

标题

老 床 位 1267 张, 五 年 累 计 建 设 养 老 床 位 3394 张 年 初 确 定 的 24 项 重 大 项 目 总 体 进 展 顺 利,9 方 面 区 政 府 实 事 项 目 全 面 完 成 ( 一 ) 区 域 经 济 转 型 升 级 成 效 明 显 现 代 服 务 业 为 主 导

目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 6 四 附 录 / 21

Microsoft Word - 澎湖田調報告-昕瑤組.doc


Microsoft Word - Final Exam Review Packet.docx

(Microsoft Word - \277\357\262\325\252\272\246\322\266q.doc)

Microsoft Word - data_mid1611_and_sol.docx

C 1

Fuzzy Highlight.ppt

高中英文科教師甄試心得

VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2

Microsoft Word - 1HF12序.doc

Microsoft Word - 讀報看科普─人體篇_橫_.doc

Microsoft Word - 2B802內文.doc

鍟嗗搧瑙傚療鈥㈤挗鏉

席 远 杨 一 人 了, 正 当 她 开 枪 时 却 发 现 子 弹 没 了 该 死, 只 能 赤 手 空 拳 了 洛 水 云 与 席 远 杨 交 起 手 来, 洛 水 云 出 手 招 招 致 命 想 那 席 远 杨 也 不 是 泛 泛 之 辈, 很 快 掌 握 了 洛 水 云 出 招 路 数 看

東區校園中法治教育種子師資教學研習營

閱 讀 素 材 V.S 分 組 方 式 的 差 異 化 教 學 工 具 表 班 級 :( ) 閱 讀 素 材 V.S 分 組 方 式 獨 立 閱 讀 夥 伴 閱 讀 ( 同 質 性 ) 夥 伴 閱 讀 ( 異 質 性 ) 友 善 陪 伴 虛 心 受 教 國 語 日 報 新 聞 生 活 文 藝 兒 童

,,, 19,,,,,,,,, 2 ( ),, Etiquette,,,,,,,,,,

汇集全球21位医生的经验和智慧,总结出最实用的专业建议,这些都是最值得你牢记的健康提醒

1 行 业 发 展 不 平 衡 我 国 房 地 产 中 介 服 务 业 起 步 较 晚, 专 业 分 工 程 度 和 国 外 发 达 国 家 相 比 还 有 很 大 差 距 房 地 产 中 介 服 务 行 业 的 发 展 水 平 与 房 地 产 开 发 行 业 的 市 场 化 水 平 密 切 相 关

二 範 例 與 問 題 討 論 中 國 傳 統 神 話 中, 用 了 好 幾 個 故 事, 拼 湊 出 天 地 創 生 的 面 貌 盤 古, 一 個 似 乎 是 卵 生 的 人 物, 漫 漫 長 覺 醒 來 手 一 劈 腳 一 你 們 看 蹬, 就 分 開 了 混 沌 據 說 他 死 後 左 眼 化


AL-M200 Series

高雄市左營國民小學八十九學年度第一學期一年級總體課程教學進度表

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft PowerPoint - Model Checking a Lazy Concurrent List-Based Set Algorithm.ppt [Compatibility Mode]

Microsoft Word - CX VMCO 3 easy step v1.doc

:,,,,,,, ( CIP) /,. :, ISBN :. F CIP ( 2002) : : * : : : : 174 ( A ) : : ( 023)

Queue & stack

xueshu004.doc

<4D F736F F D C2E0BEC7A6D2A4ADB14DB0EAA4E52DB8D5C344A8F72E646F63>

Microsoft Word - 第四組心得.doc

Microsoft Word - 11月電子報1130.doc

Microsoft Word - 新加坡手冊封面.docx

有 不 同 想 法 馬 上 記 錄 下 來, 作 為 寫 作 和 較 特 殊 題 型 的 答 題 材 料 把 握 這 四 到, 再 加 上 考 試 用 書 的 重 點 整 理, 搭 配 服 用, 讓 課 文 與 你 不 再 有 距 離 2. 考 試 成 績 好 差, 心 情 也 好 差, 可 不 可

untitled

使 用 一 般 佇 列 存 放 資 料 時, 當 前 端 (Front) 尚 有 空 位 時, 再 加 入 元 素, 卻 發 現 此 佇 列 已 滿, 請 問 此 時 使 用 下 列 那 一 個 方 法 較 佳? (A) 優 先 佇 列 (B) 環 形 佇 列 (C) 雙 向 佇 列

Microsoft PowerPoint - Lecture3.ppt

ebook39-6

LSI U320 SCSI卡用户手册.doc

1 2 3 Speaker Cable 2

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

若 心 中 放 著 一 座 空 鳥 籠, 總 有 一 天 會 把 某 個 東 西, 放 進 那 裡 面 李 秉 律

PowerPoint Presentation

untitled

1

<4D F736F F D C4EAC0EDB9A4C0E04142BCB6D4C4B6C1C5D0B6CFC0FDCCE2BEABD1A15F325F2E646F63>

Microsoft Word - 3圓來如此.doc

Open topic Bellman-Ford算法与负环

PowerPoint Presentation

(Microsoft PowerPoint - \270\352\256\306\265\262\272c\302\262\263\370.ppt)

例 度 讀 讀 不 不 來 念 來 了 讀 不 不 讀 不 讀行 利 了 說 更 了 讀

高雄市102年度「安全‧健康‧食在高雄」種子教師研習實施計畫

四 本 學 期 程 架 構 : (1) 學 活 流 程 與 策 略 視 聽 故 事 時 事 節 令 生 活 問 題 預 習 單 朗 讀 問 答 討 論 討 論 理 解 欣 賞 想 像 練 習 章 結 構 敘 寫 技 巧 修 辭 要 領 仿 作 造 字 原 理 字 義 釐 清 字 音 字 形 辨 析

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

目 录


XML SOAP DOM B2B B/S B2B B2B XML SOAP

星河33期.FIT)

408 升科大四技 家 -- 政概論 出處 參見升學書 P 之 四 纖維的各種特性 概念 植物纖維 合成纖維 詳解 酎三醋酸纖維的英文是 Triacetate 尼龍的英文是 Nylon 酏聚醯胺的英文是 Polyster 羊毛的英文是 Wool 釕嫘縈 的英文是 Rayon 壓克力纖

Searching and Sorting

ebook39-5

新北考區105年國中教育會考簡章

Transcription:

LINKED LISTS Prof. Michael Tsai 2012/3/13 作業一今天 5pm 到期下次作業起 2:20pm 到期 作業二今晚公布兩周後到期

2 大家來吐 Array 的槽 Array 有什麼不好? 插入新 element 1 3 4 新的 24 52 空 5 刪除原本的 element 1 3 42 25 5 Time complexity= O(??)

3 Array 的複雜度 Indexing ( 拿某一個元素 ) 在開頭 Insert/Delete 在尾巴 Insert/Delete 在中間 Insert/Delete Array Dynamic Array ( 滿了以後擴充成兩倍 ) O(1) O(1)?? O(n), only feasible if not full O(1), only feasible if not full O(n), only feasible if not full O(n)?? O(1), if not full O(n), if full Linked List ( 今天要學的 )?? O(n)?? 浪費的空間 0 O(n)??

4 新朋友 : Linked List 要怎麼讓資料 1. 可以隨便亂排 2. 但是我們仍然知道他的順序? 答案 : 資料亂排 但是, 另外存 下一個是誰 index [0] [1] [2] [3] [4] 資料 下一個是誰 若漢維楨冠綸主恩步青 4 0 1-1 3 開始 1

5 概念上, 應該是長這樣 開始 冠綸維楨若漢步青主恩 Null 真正的樣子 : index [0] [1] [2] [3] [4] 資料 下一個是誰 若漢維楨冠綸主恩步青 4 0 1-1 3 開始 2

6 增加一個人? 開始 冠綸維楨若漢步青主恩 Null 佩璇 index [0] [1] [2] [3] [4] [5] 資料 下一個是誰 若漢 維楨 冠綸 主恩 步青 佩璇 4 50 1-1 3 0 開始 2

7 刪掉一個人 開始 冠綸維楨若漢步青主恩 Null 佩璇 index [0] [1] [2] [3] [4] [5] 資料 下一個是誰 若漢維楨冠綸主恩步青佩璇 4 5 1-1 3 04 開始 2

8 來看一些 code ( 用 malloc/free) 怎麼宣告一個 node 的 struct? struct ListNode { int data; struct ListNode *next; }; 怎麼拿一個新的 node? struct ListNode *new; new=(struct ListNode*)malloc(sizeof(struct listnode));

9 來看一些 code new 是指標, 指到一個 struct listnode 的變數. 那如果要拿這個變數裡面的 data 呢? 可以這樣寫 : (*new).data 或者, new->data 要拿 next 呢? (*new).next 或者, new->next

10 來看一些 code head 342 551 假設 head 指到第一個 struct ListNode 那麼我要拿到 551 的下一個 ListNode 的位址怎麼寫? head->link->link ( 連續技 )

11 製造兩個 node head 342 551 struct ListNode *head, *tmp; tmp=(struct ListNode*)malloc(sizeof(struct ListNode)); if (tmp==null) exit(-1); // exit program on error tmp->data=551; tmp->next=null; head=tmp; tmp=(struct ListNode*)malloc(sizeof(struct ListNode)); tmp->data=342; tmp->next=head; head=tmp;

12 插入一個新 node 在某 node 後面 struct ListNode *x; // 指到要插入的 node 的位置 struct ListNode *new; new=(struct ListNode*)malloc(sizeof(struct ListNode)); new->data=123; 下一步呢? 先處理 new->next 還是 x->next? new->next=x->next; x->next=new; x 123 new 342 342 551

13 刪除某一個 node struct ListNode *head; // 指到一開始的 node 的位置 struct ListNode *x; // 指到要刪除的 node 的位置 struct ListNode *trail; // 指到 x 的前一個 node 的位置 分兩種狀況處理 : x 是頭, 還有 x 不是頭 if (trail) //x 不是第一個 node trail->next=x->next; head x 551 else free(x); head=x->next; trail x 342 342 342 551

14 Examples 印出整個 linked list struct ListNode *tmp; for(tmp=head; tmp!=null; tmp=tmp->next) printf( %d, tmp->data); 找到某個 node 有 data 的前一個 node 的位置 int a=123; // 假設我們要找資料是 123 的 node 的前一個 node 位置 struct ListNode *tmp; for(tmp=head; tmp!=null; tmp=tmp->next) { if (tmp->next!=null) { // 因為 tmp->next 可能是 NULL! if (tmp->next->data==a) break; // break 出去的時候, tmp 就是我們要的 } }

15 Array 和 Linked List 的複雜度比較 Indexing ( 拿某一個元素 ) 在開頭 Insert/Delete 在尾巴 Insert/Delete 在中間 Insert/Delete 浪費的空間 ( 不是拿來存資料的部分 ) Array Dynamic Array ( 滿了以後擴充成兩倍 ) O(1) O(1) O(n) O(n), only feasible if not full O(1), only feasible if not full O(n), only feasible if not full O(n) O(1), if not full O(n), if full O(n) 0 ( 存滿以後 ) O(n) ( 最多可能有一半的空間是空的 ) Linked List O(1) O(n) 找到尾巴 O(1) insert/delete O(n) 找到位置 O(1) insert/delete O(n) ( 每個 node 都有拿來存 next node 的位址欄位 )

16 < 動腦時間 > 有沒有什麼是 array 比 linked list 好的? 什麼時候用 array? 什麼時候用 linked list? < 練習題 1> 我想要找 linked list 裡面從尾巴數過來的第 k 個 node, 要怎麼寫 code? 時間複雜度為? 練習題 1 答案 : O(n), Karumanchi 3.10 problem 2,4,5

17 Example: Stacks & Queues 如果是一塊記憶體要放很多 stack 或 queue 就很難做到很 efficient 例如如果某一 stack 滿了, 就要把一堆資料往後擠 就不是 O(1) 了 T_T 解決 : 跟 Linked List 當朋友

18 Stack 要怎麼拿來當 stack 呢? ( 想想怎麼做主要的 operation) push & pop 請一位同學來講解 head 子華 若漢 主恩 孟桓 政皓 Null 例 : push( 子華 ) start 當作 stack top 怎麼寫 code? (hw2 problem 2) 那 pop 呢?

19 Queue 類似 stack 的作法 不過頭尾都要有一個指標 從頭拿, 從尾放 front rear 子華若漢政皓主恩 Null 怎麼拿? (DeQueue) struct ListNode* tmp; tmp=front; front=front->link; tmp_data=tmp->data; free(tmp); return tmp_data;

Queue new 20 立群 front rear 子華 若漢 政皓 主恩 那怎麼放? 假設 new 是指到新的 node rear->next=new; new->next=null; rear=new;

21 練習題 2: 把 linked list 反過來 反過來 : 把 a 3 14 2 8 1 0 變成 b 1 0 2 8 3 14 怎麼弄? 答案 : Karumanchi 3.10 problem 16

22 Singly v.s. doubly linked list Singly linked list: head Doubly linked list: 3 14 2 8 1 0 head 3 14 2 8 1 0 什麼時候需要用雙? Singly linked list 只能往後, 不能往前 ( 要從最前面開始重新找 ) Doubly linked list 用在常常需要 倒帶 的時候 好處 : 倒帶方便 (O(1)) ( 想想在 singly linked list 裡面要刪掉一個 node 時, 必須要找到前一個 node) 壞處 : 兩個 pointer 的儲存空間 Insert/delete 的時候稍微慢一點 ( 要處理兩個 pointer, next & prev)

23 回收很慢 要把一個用完的 linked list 每個 node 都 free 掉 (Why?) 有幾項就要幾項的時間 : O(n) 懶人方法 : 丟到一個 回收桶, 之後需要的時候再撿出來 希望丟 =O(1), 而且撿 =O(1) 怎麼做? 回收桶 3 14 a 2 8 1 0 關鍵 : 找尾巴很慢. ( 不是 O(1)) 但是又不想多花空間紀錄尾巴

24 Circular List 開始 的那個箭頭, 指在尾巴 最後一個 node 指回開頭 有什麼好處? 串接很方便! 丟進回收桶 =O(1)!! temp 3 14 2 8 1 0 回收桶 head 也可以有 doubly circular linked list!

25 暫停! 來回想一下我們學了哪些種類的 linked list Singly linked list Circular Non-circular (chain) Doubly linked list Circular Non-circular (chain)

26 Today s Reading Assignments Karumanchi 3.1-3.8 有很多的 source code, 特別是 3.6 的部分是基礎, 一定要看懂! Karumanchi 3.10 problem {2,4,5},{15,16},{24,25,27}

27 上課前要講的事項 Bravo for 資訊之夜! HW2 Bonus (5%): Please write down your constructive suggestion for the course based on the lectures and homework so far; what are the things that you would like us to change and how? 建議 : 上課不要開筆記型電腦 印一份講義帶來上課, 用鉛筆作筆記 ( 有時候可以練習題目 ) 這樣比較不容易睡著 + 參與度會比較高喔