括號匹配問題 順序棧

2021-10-03 16:26:15 字數 1328 閱讀 4032

思想:每讀入乙個括號:

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