長也 - 筆記長也NotesHazuya

樹—樹狀結構的基本名詞與介紹

樹狀結構 樹是由節點(node)與邊(edge)所組成的集合。包含一個特殊的節點樹根(root),其餘節點分成n個集合,每個集合都是一棵樹。  

遞迴—河內塔

河內塔 一般河內塔有三個柱子,與N個碟盤,要將N個碟盤由A柱移動至C柱,其規則如下: 1.一次只能搬動一個盤子 2.大盤子不可以疊在小盤子上面 (小盤子必須在大盤子上) 演算法 假設要移動n個碟盤: a.當 n=1時,直接將碟盤由A移動至C b.否則: 1.搬移n-1個碟盤,由A至B藉由C 2.搬移第n個碟盤,由A......

串列之應用—多項式相加

多項式相加 多項式相加可利用串列完成,其資料之表示方法如下: COEF EXP

串列之應用—以串列表示堆疊與佇列

堆疊與佇列 先前我們在介紹堆疊與佇列,是以陣列實作。本篇文章將以串列的方式來實作堆疊與佇列,關於堆疊與佇列之相關介紹請看「堆疊與佇列圖解概念」一文。 以串列表示堆疊 堆疊之加入 堆疊為一個出入口,因此我們可以看做將資料加入串列的前端。 1.ptr.next=top 2.top=ptr;

鏈結串列—雙向環狀鍊結串列之介紹與範例

環狀雙向鏈結串列 雙向之鏈結串列有別於單向鏈結串列,他不僅指向後一個節點,也會指向前一個節點。 而雙向鏈結串列通常具有三個欄位,左鏈結(llink)、資料(data)、右鏈結(rlink)。請參考下圖:

鏈結串列—兩個環狀鏈結串列之連結

環狀鏈結串列 關於環狀鏈結串列之詳細介紹,請參考上一篇「串列—環狀鍊結串列之介紹與範例」。 兩個環狀串列之連結 今假設有A與B兩個串列 1.尋找A串列之末端 Atail=Ahead.next; while ( Atail.next!=Ahead)       Atail=Atail.next; 2.將A串列末端指向 B串列之head.next (Atail.......

鏈結串列—環狀鏈結串列之介紹與範例

鏈結串列 上一篇文章我們已經基本的介紹過了鏈結串列,請參考上一篇文章「串列—單向鏈結串列之介紹與範例」。 環狀鏈結串列 之前在佇列時有學過"環狀佇列",同理環狀串列也是將資料的末端與資料的前端連在一起。(在環狀佇列的示意圖很像圓餅圖,但意思都是循環)

鏈結串列—單向鏈結串列之介紹與範例

鏈結串列 鏈結串列是利用指標將資料連結起來的資料結構,需要利用額外的指標空間將資料串起來。 節點:有儲存的資料與指標兩個空間 串列:負責串接各節點

堆疊的應用—後序表示法之計算

後序表示法之計算 關於何謂後序表示法,請看「堆疊的應用—中序表示轉後序表示」這一篇文章。 計算步驟 1.把此後序運算式以一字串表示 2.每次取一個字為一token,此token若為一運算元,則把該運算元push至堆疊。若此token為一運算子,則從堆疊pop出2個運算元做適當的運算 3.將步驟2的結果push到堆疊,重複執行步驟2......

堆疊的應用—中序表示轉後序表示

中序轉後序 中序與後序表示法: 一般我們平常使用的表示方法都屬於中序,如:a*(b+c)*d。該算式的後序則為:abc+*d*。 中序與後序的轉換: 若以上面的算式為例子,我們先依照運算子的計算先後順序將其括弧: 1.  (a*(b+c))*d 2.  ((a*(b+c))*d) 3.  都加上括弧之後,將運算子放到括弧右方