繳交時間:
甲班- 2017/12/31 23:30 前繳交至moodle
乙班- 2017/12/30 23:30 前繳交至moodle
部份題目即為期末考內容!
新增、查詢、刪除單向環狀串列 (singly linked list) 中的節點元素
新增、查詢、刪除雙向環狀串列 (doubly linked list) 中的節點元素
實作 Linked Stack
要求的功能:
[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] 含開頭空白節點 (header node) 的雙向環狀串列
==> 需求如 [A] 所列
[C] Implementing Linked Stack (push, pop) (建議利用開頭空白節點)
加分功能範例:
1. 反轉單向串列後印出
2. 反轉雙向串列後印出
可能的執行畫面 (用頁籤分開單向、雙向的操作):
單向環狀串列範例:
或:
對 linked stack 做 push, pop :
雙向環狀串列範例執行畫面:
Reversing a singly linked list
Push / pop in a linked stack