實驗四 棧和佇列的基本操作的實現

2021-09-10 17:27:48 字數 3818 閱讀 2352

1.實驗目的

熟練掌握棧和佇列的抽象資料型別,能在相應的應用問題中正確選用他們,熟練掌握棧和佇列的實現方法(順序和鏈式)。兩種儲存結構和基本操作的實現演算法,注意空和滿的判斷條件及他們的描述方法,掌握迴圈佇列和其他順序結構實現上的不同及解決方法,熟悉各種佇列的基本操作在迴圈佇列上的實現。

2.實驗內容

(1)用棧實現括號匹配的檢驗

(2)用棧實現形如a+b@b+a#的中心對稱的字串行的檢驗。

(3)用佇列實現形如a+b@b+a#的中心對稱的字串行的檢驗。

選擇合適的儲存結構(順序棧或者鏈式棧)表示棧,給出其定義,在上述儲存結構上實現棧的基本操作:初始化、置棧空、入棧、出棧、取棧頂元素等。選擇合適的儲存結構(迴圈佇列)表示佇列,解決佇列空、隊滿判斷條件相同的矛盾,實現基於迴圈佇列的儲存結構的基本操作,初始化、隊空(滿)判斷。入隊、出隊、取隊頭元素。求佇列長度等,對寫出的·演算法進行時間複雜度的分析。

#include

#include

#define true 1

#define false 0

#define error 0

#define ok 1

#define overflow 0

#define stack_init_size 100

#define stackincrement 10

typedef

int status;

typedef

char selemtype;

typedef

struct

sqstack;

status initstack

(sqstack *s)

status push

(sqstack *s, selemtype e)

*s->top = e;

s->top++

;return ok;

}selemtype pop

(sqstack *s)

return

*--s->top;

}selemtype gettop

(sqstack *s)

return

*(s->top -1)

;//取棧頂元素

}status stackempty

(sqstack *s)

else

}status bracketsmatch

(sqstack *s)')

// 情況1:避免出現輸入的全是右括號:}])

x =pop(s);if

(!((x ==

'('&&c ==

')')

||(x ==

'['&&c ==

']')

||(x =='')

))//情況2:避免到來的右括號不是所期待的:[)

}//if語句結束

c =getchar()

;}//while迴圈結束 if(

stackempty

(s))

else

}//bracketsmatch函式結束

;//取棧頂元素

}status stackempty

(sqstack *s)

else

}status match

(sqstack *s)

c =getchar()

;while

(c !=

'@'&&

!stackempty

(s))}if

(c ==

'#'&&

stackempty

(s))

//為了解決前半部分確實匹配上了,但是"@"後邊的部分超過了前邊部分的長度

;//跳過對稱中心標誌@,不讓他進佇列

while

(*p !=

'#')

while

(queuelength

(q)!=0)

}if(q.rear == q.front)

//當從隊頭隊尾刪除字元的兩個指標相遇時,說明他們之前的字元都成功匹配上了

printf

("是中心對稱字串行!");

資料結構 實驗四棧和佇列的基本操作實現及其應用

一 實驗目的 1,熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2,學會使用棧和佇列解決實際問題。二 實驗內容 1,自己確定結點的具體資料型別和問題規模 分別建立乙個順序棧和鏈棧,實現棧的壓棧和出棧操作。分別建立乙個順序佇列和鏈佇列,實現佇列的入隊和出隊操作。2,設計演算法並...

實驗三 棧和佇列的基本操作實現及其應用

一 實驗目的 1 熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2 學會使用棧和佇列解決實際問題。二 實驗內容 1 自己確定結點的具體資料型別和問題規模 分別建立乙個順序棧和鏈棧,實現棧的壓棧和出棧操作。分別建立乙個順序佇列和鏈佇列,實現佇列的入隊和出隊操作。2 設計演算法並...

實驗4 棧和佇列的基本操作實現及其應用

1 熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2 學會使用棧和佇列解決實際問題。1 自己確定結點的具體資料型別和問題規模 分別建立乙個順序棧和鏈棧,實現棧的壓棧和出棧操作。三 源程式 五 實驗心得 棧特點就是先進後出 後進先出 從乙個口進去,從同乙個口出去。棧是限定僅在尾...