iT邦幫忙

鐵人檔案

2022 iThome 鐵人賽
回列表
Software Development

用C++ 設計程式中的系統櫃 系列

寫過程式的人都知道,每個程式執行的效率以及使用的記憶體空間都大不相同,即便他們的目的相同,為什麼呢?原因就在於如何存取資料,以及怎麼取得資料!想像你是一個儲貨中心的老闆,你要怎麼去加速員工取貨與存貨的速度?或許你會設計不同的空間,或許你會將貨物分門別類!這些都是方法。在這場鐵人賽中,我會分享如何用C++管理程式中的資料,換句話說,用C++建造出不同的儲物空間,而在程式設計中,這門學問就叫做「資料結構」。

鐵人鍊成 | 共 30 篇文章 | 4 人訂閱 訂閱系列文 RSS系列文
DAY 11

[Day 11] 用C++ 設計程式中的系統櫃:linkedList::pushBack()

有了 linkedList::pushFront() 我們也需要一個 linkedList::pushBack()。從這個類別方法中,我們可以很明顯的發覺「單向...

2022-09-12 ‧ 由 chmh0624 分享
DAY 12

[Day 12] 用C++ 設計程式中的系統櫃:linkedList::popBack()

今天我們要完成最後一個基本增減節點的類別方法:linkedList::popBack() 與上一篇相同的是我們可以來看看單雙向鏈結串列的差異。 定義類別 cl...

2022-09-13 ‧ 由 chmh0624 分享
DAY 13

[Day 13] 用C++ 設計程式中的系統櫃:Stack with Linked List

介紹完了四種基本增刪節點的類別方法,現在我們要將他們加以應用。今天的目標是實作一個「堆疊 Stack」! 堆疊 Stack 堆疊是一個「後進先出」的資料結構。什...

2022-09-14 ‧ 由 chmh0624 分享
DAY 14

[Day 14] 用C++ 設計程式中的系統櫃:Queue with Linked List

上一篇,介紹了「堆疊」,這篇我們來介紹「佇列 Queue」! 他們的性質其實非常相似,我們來看看吧! 佇列 Queue 佇列是一個「先進先出」的資料結構。什麼...

2022-09-15 ‧ 由 chmh0624 分享
DAY 15

[Day 15] 用C++ 設計程式中的系統櫃:linkedList::insert()

如果鏈結串列只能從頭或尾新增節點是不是顯得有點無聊呢? 這篇我們就要來介紹如何從中間新增資料,使得所有資料遞增排序。 定義類別 class SLL { pri...

2022-09-16 ‧ 由 chmh0624 分享
DAY 16

[Day 16] 用C++ 設計程式中的系統櫃:linkedList::remove()

實作一下 linkedList::remove() 吧! 這個類別的功用是:給定一個目標值,從鏈結串列移除包含目標值的節點。 定義類別 class SLL {...

2022-09-17 ‧ 由 chmh0624 分享
DAY 17

[Day 17] 用C++ 設計程式中的系統櫃:linkedList::reverse()

今天,我們來解決一個問題吧! 給定一個遞增的鏈結串列,回傳一個遞減的鏈結串列。 其實,這個問題有兩個解決方法! 將原本鏈結串列的數值儲存於陣列中,再將它們以遞...

2022-09-18 ‧ 由 chmh0624 分享
DAY 18

[Day 18] 用C++ 設計程式中的系統櫃:樹的概論

樹(Tree) vs. 圖(Graph) 一個資料結構,如果他是沒有「循環」 (Cycle) 在內的,那他可以被拉成「樹」 如果存在「循環」在內,那他就叫「圖」...

2022-09-19 ‧ 由 chmh0624 分享
DAY 19

[Day 19] 用C++ 設計程式中的系統櫃:二元搜尋樹與子樹

上一篇我們介紹了「二元樹」,且我們提到「二元搜尋樹是二元樹的一種」,這篇我們要來定義何謂二元搜尋樹! 定義「二元搜尋樹」 如果根節點 root 存在左子節點...

2022-09-20 ‧ 由 chmh0624 分享
DAY 20

[Day 20] 用C++ 設計程式中的系統櫃:Class BST

建立一棵樹之前,我們需要先建立「樹節點」類別。 由於實作的樹為「二元搜尋樹」,所以我們稱樹節點類別為 BSTNode 定義 BSTNode 從之前的二元樹模型...

2022-09-21 ‧ 由 chmh0624 分享