#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 利用棧編寫滿足下列要求的括號匹配檢驗程式 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,即 或 等為正確的格式,或...
棧的應用之括號匹配檢驗
棧結構具有後進先出的固有特性,在程式設計中很有幫助。這裡舉乙個例子,將棧應用與括號匹配的檢驗。假設表示式中允許三種括號 小括號 中括號和大括號,巢狀的順序任意。等均為正確格式。檢驗括號是否匹配可用 期待的急迫程度 來描述。接收乙個正括號後,計算機期待著乙個與之匹配的反括號。如果此時接收到乙個反括號,...