括號匹配的檢驗(棧)

2021-10-08 09:43:52 字數 1571 閱讀 2959

#include

using namespace std;

#include

#include

#define ture 1

#define false 0

#define ok 1

#define error 0

#define overflow 2

typedef

int status;

typedef

char selemtype;

//棧的順序儲存表示

#define stack_init_size 10

//儲存空間初始分配量

#define stackincrement 2

//儲存空間分配增量

struct sqstack

;//順序棧

status initstack

(sqstack& s)

;//構建乙個空表

status stackempty

(sqstack s)

;//若棧s為空棧,返回ture,否則返回false

status push

(sqstack& s, selemtype e)

;//插入元素e為新的棧頂元素

status pop

(sqstack& s, selemtype& e)

;//若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error

void

check()

//**括號匹配檢查**

else

}else

//棧空

default

:p++

;//其他字元不處理,指標後移}}

}if(stackempty

(s))

//字串結束時棧空

printf

("括號匹配\n");

else

printf

("括號不匹配\n");

}int

main()

status initstack

(sqstack& s)

//構建乙個空表

status stackempty

(sqstack s)

//若棧s為空棧,返回ture,否則返回false

status push

(sqstack& s, selemtype e)

//插入元素e為新的棧頂元素

*(s.top)

++= e;

return ok;

}status pop

(sqstack& s, selemtype& e)

//若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error

除錯結果如下

因為**中用到了引用,所以需要用c++編譯器,我用的是vs2019,有些函式可能和別的編譯器長得不一樣比如gets_s()

棧的應用 括號匹配檢驗

輸入包含括號的表示式,包含3中括號 圓括號 方括號,大括號 其巢狀順序隨意,即 或 等均為正確的輸入格式,檢驗輸入表示式中的括號是否匹配。源 bracketmatch.h ifndef bracketmatch h define bracketmatch h define maxsize 100 t...

棧的運用(括號匹配檢驗)

8586 括號匹配檢驗 時間限制 1000ms 長度限制 10kb 提交次數 4447 通過次數 1864 題型 程式設計題 語言 g gcc description 利用棧編寫滿足下列要求的括號匹配檢驗程式 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,即 或 等為正確的格式,或...

棧的應用之括號匹配檢驗

棧結構具有後進先出的固有特性,在程式設計中很有幫助。這裡舉乙個例子,將棧應用與括號匹配的檢驗。假設表示式中允許三種括號 小括號 中括號和大括號,巢狀的順序任意。等均為正確格式。檢驗括號是否匹配可用 期待的急迫程度 來描述。接收乙個正括號後,計算機期待著乙個與之匹配的反括號。如果此時接收到乙個反括號,...