繳交時間:
新增、查詢、刪除單向環狀串列 (singly linked list) 中的節點元素
實作 Linked Stack
實作 Linked Queue
Video Support:
[06-1] Linked List (Header node, Synchronization among tabControls) https://youtu.be/sNAvhMw3rTQ (15:14)
[06-2] Linked List (InsertFirst, InsertLast) https://youtu.be/gdWHO7mBB0Y (14:55)
[06-3] Linked List (Search, InsertAFter, InsertBefore, Delete) https://youtu.be/6uGjMmwlgzo (37:41)
[06-4] Linked List (Insert n Random Numbers) https://youtu.be/6ZN9cw9apXQ (25:29)
[06-5] Linked Stack (Push and Pop) https://youtu.be/YsPEB6hVFJk (8:04)
要求的功能:
[A] 含開頭空白節點 (header node) 的環狀串列
0. 維護一個開頭空白節點於環狀串列最前方
1. 依序印出環狀串列中所有元素(不含開頭空白節點元素;此程序應在以下各項要求中呼叫,以確定該要求確實達成)(Print List)
2. 新增一元素 element
2.1 於開頭節點之後,使其成為環狀串列的第一個元素 (Insert as first)
2.2 使其為環狀串列的最後一個元素 (Insert as last)
(利用一 last 指標固定指向串列中最後一個節點, 新節點直接加至其後)
3. 搜尋元素 target 是否存在於環狀串列中 (Find target)
3.1 找到或找不到,皆印出適當訊息
3.2 於其後新增一元素 element(若找不到, 應印出適當訊息)(Find target and insert element after target)
3.3 於其前新增一元素 element(若找不到, 應印出適當訊息)(Find target and insert element before target)
3.4 刪除所找到的 target元素 (Delete target)
4. 新增 n 個節點(各含一個亂數、可指定亂數範圍)至環狀串列之最後 (Randomly insert n element)
5. 清除所有節點(不含開頭空白節點)並歸還記憶空間
[B] Implementing Linked Stack (push, pop) (建議利用開頭空白節點)
[C] Implementing Linked Queue (insertQ, deleteQ) (建議利用開頭空白節點)
加分功能範例:
雙向串列:新增丶搜尋丶刪除。
反轉單向串列後印出。
可能的執行畫面
單向環狀串列範例:
或:
對 linked stack 做 push, pop :
Reversing a singly linked list
Push / pop in a linked stack
Using JavaScript