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

2021-10-19 02:56:48 字數 1689 閱讀 6987

8586 括號匹配檢驗

時間限制:1000ms **長度限制:10kb

提交次數:4447 通過次數:1864

題型: 程式設計題 語言: g++;gcc

description 利用棧編寫滿足下列要求的括號匹配檢驗程式:假設表示式中允許包含兩種括號:圓括號和方括號,其巢狀的順序隨意,即()或[()]等為正確的格式,[(]或([())或(()])均為不正確的格式。輸入乙個包含上述括號的表示式,檢驗括號是否配對。本題給出部分check()函式,要求將check()函式補充完整,並完成整個程式。

typedef char selemtype;

輸入格式

第一行:輸入乙個包含圓括號或方括號、不超過80個字元的表示式串。

輸出格式

第一行:若輸入表示式括號匹配,輸出"matching"; 若不匹配,輸出具體資訊:「isn』t matched pairs」, 或"lack of left parenthesis"或"lack of right parenthesis"

輸入樣例

8*[3*(35-23)]

輸出樣例

matching

typedef

char selemtype;

#include

"malloc.h"

#include

"stdio.h"

#include

"math.h"

#include

"stdlib.h"

// exit()

#define ok 1

#define error 0

#define true 1

#define false 0

typedef

int status;

// status是函式的型別,其值是函式結果狀態**,如ok等

#define stack_init_size 10

// 儲存空間初始分配量

#define stackincrement 2

// 儲存空間分配增量

struct sqstack

;// 順序棧

status initstack

(sqstack &s)

s.top=s.base;

s.stacksize=stack_init_size;

return ok;

}status stackempty

(sqstack s)

else

}status push

(sqstack &s,selemtype e)

else

} status pop

(sqstack &s,selemtype &e)

else

}void

check()

else

}else

// 棧空

default

: p++

;// 其它字元不處理,指標向後移}if

(stackempty

(s))

// 字串結束時棧空

printf

("matching\n");

else

printf

("lack of right parenthesis\n");

}}intmain()

括號匹配的檢驗(棧)

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 ...

棧的應用 括號匹配檢驗

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

棧的應用之括號匹配檢驗

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