資料結構與演算法C 語言描述第五章棧和佇列

2021-05-22 14:28:09 字數 3379 閱讀 2849

5章棧和佇列

棧和佇列是兩種面向表的資料結構

5.1棧、棧的實現以及

stack

類棧的標準模型是自助餐廳的盤子堆

5.1.1

棧的操作

5.1.2

stack

類的實現

class

cstack

public

int count

} public

void push(object item)

public

object pop()

public

void clear()

public

object peek

} }

下面就用這段**來編寫乙個用棧解決問題的程式。

判斷是否是回文

static

void main(string args)

pos++; }

if (ispalindrome)

console.writeline(word + "is a palindrome.");

else

console.writeline(word + "is not a palindrome.");

console.read(); }

5.2 stack

類stack

類是icollection介面的乙個實現,它代表了乙個lifo群集或乙個棧。

5.2.1

stack

構造器方法

這裡有三種方法來例項化乙個棧的物件

stack mystack = new stack();

第二種構造方法允許建立乙個來自另乙個群集物件的棧物件。例如,可以把構造器作為陣列進行傳遞,並且用來自現有陣列的元素構建成棧:

string names = new string;

stack namestack = new stack(names);

執行pop方法會首先把「mike」從棧中移除。

stack mystack = new stack

(25)

5.2.2

主要的棧操作

用棧來計算簡單的算術表示式

class

class1

static

bool isnumeric(string input)

return flag; }

static

void calculate(stack n, stack o, string exp)

} else

if (ch == "+" || ch == "-" || ch == "*" || ch == "/")

o.push(ch);

if (n.count == 2)

compute(n, o); }

}static

void compute(stack n, stack o)

} }

5.2.3

peek

方法5.2.4

clear

方法5.2.5

contains

方法5.2.6

copyto

方法和toarray方法

copyto

方法會把棧內的內容複製到乙個陣列中。陣列必須是object型別,因為這是所有棧物件的資料型別

stack mystack = new

stack();

for (int i = 20; i > 0; i--)

object myarray = new

object[mystack.count];

mystack.copyto(myarray, 0);

for (int i = 0; i < 20; i++)

toarray

方法:myarray = mystack.toarray();

5.2.7

stack

類的例項:十進位制向多種進製的轉換

static

void main(string args)

static

void mulbase(int n, int b)

while (n != 0);

while (digits.count > 0)

} 5.3

佇列、queue

類以及queue

類的實現

5.3.2

queue

類的實現

class

cqueue

public

void enqueue(object item)

public

void dequeue()

public

object peek()

public

void clearqueue()

public

int count()

} 5.3.4

用佇列排序資料

class

class1;

static

void displayarray(int n)

} static

void rsort(queue que, int n, digittype digit)

} static

void buildarray(queue que, int n)

} }

static

void main(string args) ;

for (int i = 0; i < 10; i++)

numqueue[i] = new

queue();

rsort(numqueue, nums, digittype.ones);

buildarray(numqueue, nums);

console.writeline();

console.writeline("first pass results");

displayarray(nums);

rsort(numqueue, nums, digittype.tens);

buildarray(numqueue, nums);

console.writeline();

console.writeline("second pass results");

displayarray(nums);

console.writeline(); }

}5.3.5

源自queue類的優先佇列

許多應用程式在操作中都利用到了優先佇列,乙個很好的例項就是在計算機作業系統內的程序處理。優先順序為0的程序比優先順序為20的任務具有更高的優先性。

資料結構(第五章)

樹下 第一講一.堆 什麼是堆?在講堆之前,我們先看看什麼是優先佇列。優先佇列 是一種特殊的佇列,從名稱上看,優先,顧名思義,取出的元素是按照一定的優先順序出隊的,而不是元素進入佇列的先後順序。優先佇列的完全二叉樹表示 堆的兩個特性 結構性 用陣列表示的完全二叉樹。有序性 任一結點的關鍵字是其子樹所有...

資料結構筆記 第五章

一.樹的邏輯結構 樹是乙個有限的集合,集合中的元素稱為結點。1 結點的個數為0 稱為空樹。2 結點的個數為1 此節點稱為根節點。3 節點的個數大於1 則除了根結點以外的結點又可分為多個集合,每乙個集合本身其實質上也是一棵樹,並且是根節點的子樹。二.二叉樹的邏輯結構 1 二叉樹的定義 二叉樹首先必須是...

資料結構筆記 第五章

雙親表示法 基本思想 用一維陣列來儲存樹的各個結點 一般 按層序儲存 陣列中的乙個元素對應樹中的乙個 結點,包括結點的資料資訊以及該結點的雙親在數 組中的下標 森林轉換為二叉樹 將森林中的每棵樹轉換成二叉樹 從第二棵二叉樹開始,依次把後一棵二叉樹的根 結點作為前一棵二叉樹根結點的右孩子,當所有二 叉...