資料結構實踐專案 棧

2021-09-23 17:47:48 字數 1393 閱讀 2839

本組專案針對《資料結構基礎系列(3):棧和佇列》中的1-6課:

1 「棧和佇列」導學

2 棧的定義

3 棧的順序儲存結構及其基本運算實現

4 棧的鏈式儲存結構及其基本運算的實現

5 棧的應用1-表示式求值

6 棧的應用2-迷宮問題

【專案1 - 建立順序棧演算法庫】

定義順序棧儲存結構,實現其基本運算,並完成測試。

要求:

1、標頭檔案sqstack.h中定義資料結構並宣告用於完成基本運算的函式。對應基本運算的函式包括:

void initstack(sqstack *&s);    //初始化棧

void destroystack(sqstack *&s); //銷毀棧

bool stackempty(sqstack *s); //棧是否為空

int stacklength(sqstack *s); //返回棧中元素個數——棧長度

bool push(sqstack *&s,elemtype e); //入棧

bool pop(sqstack *&s,elemtype &e); //出棧

bool gettop(sqstack *s,elemtype &e); //取棧頂資料元素

void dispstack(sqstack *s); //輸出棧

2、在sqstack.cpp中實現這些函式

3、在main函式中完成測試,包括如下內容:

(1)初始化棧s

(2)判斷s棧是否為空

(3)依次進棧元素a,b,c,d,e

(4)判斷s棧是否為空

(5)輸出棧長度

(6)輸出從棧頂到棧底元素

(7)出棧,並輸出出棧序列

(8)判斷s棧是否為空

(9)釋放棧

[參考解答]

【專案2 - 建立鏈棧演算法庫】

定義鏈棧儲存結構,實現其基本運算,並完成測試。

具體要求參照專案1。

[參考解答]

【專案3 - 括號的匹配】

假設表示式中允許三種括號:圓括號、方括號和大括號。編寫乙個演算法,判斷表示式中的各種左括號是否與右括號匹配。

例如,輸入2+(3+4)*[2+]-8,輸出匹配正確;輸入2+(3+4*[2)+-8,輸出匹配錯誤。

,則可以得出不配對的結論。(2)也可以設計乙個返回值為布林型的函式,引數為要配對的表示式,為乙個字串。

[參考解答]

【專案5 - 字尾表示式】

利用sqstack.h中棧的基本運算,實現將乙個中綴表示式轉換為對應的字尾表示式的演算法。例如,輸入(56-20)/(4+2),輸出字尾表示式::56#20#-4#2#+/要求在數字後加#

[參考解答]

資料結構實踐專案 排序

本文是 資料結構基礎系列 排序 課程的實踐專案。本文針對 1.排序問題及導學 2.插入排序之直接插入排序 3.插入排序之希爾排序 4.交換排序之氣泡排序 5.交換排序之快速排序 6.選擇排序之直接選擇排序 7.選擇排序之堆排序 8.歸併排序 9.簡單的計數排序 10.基數排序 11.各種排序的比較 ...

資料結構實踐專案 排序

本文是 資料結構基礎系列 排序 課程的實踐專案。本文針對 1.排序問題及導學 2.插入排序之直接插入排序 3.插入排序之希爾排序 4.交換排序之氣泡排序 5.交換排序之快速排序 6.選擇排序之直接選擇排序 7.選擇排序之堆排序 8.歸併排序 9.簡單的計數排序 10.基數排序 11.各種排序的比較 ...

資料結構實踐 數制轉換 棧

本文是針對資料結構基礎系列網路課程 3 棧和佇列的實現專案。專案 數制轉換 把十進位制的整數轉換為任一進製數輸出。請利用棧設計演算法,並實現程式。參考解答 解法 標頭檔案sqstack.h請見 順序棧演算法庫 使用鏈棧也可以。include include sqstack.h void multib...