Python是最適合初學者的程式語言,原因大致為簡潔、易懂、應用多,因此我覺得大家可以藉著這個程式語言入門「資料結構」這門相對困難的學問!在鐵人賽中,我將從最簡單的列表、字典說起,再進一步到鏈結串列與二元樹的實作。為求完整,我會在其中簡單介紹Python的物件導向特性,使資料結構更清楚明瞭。
先不從開模開始說明,我們先聊聊什麼事物件吧!物件包含兩種要素,特性和行為!舉一輛汽車為例, 特性有馬力、座位數、材料等 行為有加速、煞車、停車等 如果每做一...
今天來做一個 class Student 吧! 接續上一篇的問題:他所生產出的物件需要有什麼特性、行為? 姓名、體重、成績、興趣應該算是他們的特性吧!行為呢?讀...
接續上一篇的開模實戰! 完成了建構子的實作,也代表著我們定義了大多數的學生屬性,包含姓名、體重、成績、興趣: class Student: def __...
你有沒有想過當你刪掉列表第一個的元素,程式背後會怎麼運作? mylist = [1,2,3,4] mylist.remove(1) 電腦會將剩餘的元素向前移動...
今日目標: 定義 class Node:節點的組成 定義 class SLL:單向鏈結串列的組成 push_front(data):從頭新增節點 定義...
今日目標: pop_front(self) : 刪除第一個節點 push_back(self, data) : 新增節點到最後方 pop_back(se...
今日目標: printAll(self):輸出所有鏈結串列資料 reverse(self):翻轉鏈結串列 定義 printAll() 我們需要一個浮動...
鏈結串列中的節點可以指向下一個節點或是 None,如果下一個節點是曾經出現過的節點,那麼我們稱這個鏈結串列包含一個 Cycle 。今天的目標就是來偵測這個鏈結串...
今天的這個題目是判斷鏈結串列是否為「回文」 如果這個鏈結串列是雙向的,那麼我們就可以用兩個指標來判斷這個鏈結串列是否為回文,但是今天題目只提供一個單向鏈結串列,...
還記得堆疊的特色嗎?先進到堆疊的資料會比較晚被取出!我們稱這個性質叫「先進後出」。 之前練習過用列表實作,那我們今天就來用鏈結串列實作吧! 第一步就是實作...