思想:每讀入乙個括號:
(1)若是左括號,則直接入棧,等待相匹配的同類右括號。
(2)若是右括號,且與當前棧頂的左括號同型別,則二者匹配,將棧頂的左括號出棧,否則屬於不合法的情況。
#include
#include
#define
true
1#define
false
0#define
stack_size
50#define
stackelementtype
char/*
順序棧*
/typedef
struct
seqstack;/
*初始化*/
void
initstack
(seqstack*s
)int
push
(seqstack*s
,stackelementtypex)
/*判棧空*
/int
isempty
(seqstack*s
)/*判斷棧s為空棧時返回值為真,反之為假*/
/*取棧頂元素。*/
intgettop
(seqstack*s
,stackelementtype*x
)}/*
進行匹配*/
intmatch
(charch,
char
str)
elseif(
ch=='['&&
str=
=']'
)elseif(
ch==''
)else
return
false;}
intpop
(seqstack*s
,stackelementtype*x
)}void
bracketmatch
(char
*str)/
*str
中為輸入的字串,利用堆疊技術來檢查該字串中的括號是否匹配*/
':if(
isempty(&
s))/
*棧為空返回的是1,
就是第乙個入棧的字元就是右括號*/
else
}break;}
}if(isempty(&
s))printf
("\n括號匹配!");
else
printf
("\n左括號多餘!");
}int
main()
順序棧括號匹配問題
使用順序棧解決括號匹配問題 括號匹配問題 包括三種型別的括號 和其他字元,判斷是否存在對應的左右括號 舉例 s 滿足條件 s 不滿足條件 include using namespace std typedef char elemtype const int maxsize 100 struct sq...
順序棧的應用括號匹配問題
利用程式設計檢查這一串字元中的 是否匹配 解決思路 利用棧將字串的 的時候取出一位來和棧頂判斷是否相等。充分利用棧空間的特點。include define m 100 using namespace std typedef struct stack stacktype 別名設定 bool judge...
順序棧實現括號匹配
採用順序棧程式設計實現 表示式的括號是否匹配問題。要求 輸入帶括號的表示式,判斷其中括號是否配對。擴充套件功能 給出配對括號的位序和不配對括號的位序。include include include include include define overflow 2 define stack init...