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