資料結構 - notesHazuya筆記長也

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

堆疊與佇列 先前我們在介紹堆疊與佇列,是以陣列實作。本篇文章將以串列的方式來實作堆疊與佇列,關於堆疊與佇列之相關介紹請看「堆疊與佇列圖解概念」一文。 以串列表示堆疊 堆疊之加入 堆疊為一個出入口,因此我們可以看做將資料加入串列的前端。 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.  都加上括弧之後,將運算子放到括弧右方

佇列—環狀佇列概念與範例

環狀佇列 一般的佇列僅是單一的線性結構,若rear加入的資料已經達到最大值,即使front刪除資料,仍然會因rear已達到最大值而回傳佇列已滿,不符合實際情況,此時則使用環狀佇列解決問題。 環狀佇列的加入 環狀佇列範例(加入佇列) int max = 3; String[] q = new String[max];......

佇列—標準佇列基本加入與刪除範例

以下未使用物件導向設計 public class Queue { public static void main(String[] args) { Scanner input = new Scanner(System.in); int max = 3; String[] q = new String[max]; int rear = -1; int front = 0; while (true) { System.out.println("&l......

堆疊—堆疊基本加入與刪除-範例程式碼

*書中以物件導向方式篩寫,為了方便此範例未用物件導向,請見諒! Scanner input=new Scanner(System.in); System.out.println("Please Keyin MAX:"); int max = input.nextInt(); String[] st=new String[max]; int top=-1; System.out.println("<1>insert <2>de......