YTU 3003 括號匹配(棧和佇列)

2021-07-10 23:11:33 字數 1357 閱讀 3282

時間限制: 1 sec  

記憶體限制: 128 mb

提交: 2  

解決: 2 [

提交][

狀態][

討論版]

假設乙個表示式中只允許包含三種括號:圓括號「

(」和「

)」,方括號「

[」和「

]」和花括號「

」,且這三種括號可按任意的次序巢狀使用如:(…[…

…[…]

…(…)

…]…)

。設計乙個演算法,判斷表示式中的括號是否正確配對。輸出結果為yes或者no。

順序棧的定義為

typedef struct

spstack;

需編寫的演算法為

int solve(char *a,spstack *st);

可使用的函式有:

1、bool pop(spstack *&s,char &e);    //出棧

2、bool gettop(spstack *s,char &e); //取棧頂元素

3、bool push(spstack *&s,char e);     //入棧

4、bool stackempty(spstack *s);        //判斷是否為空棧

括號匹配正確返回1,否則返回0。其中a為該表示式,st為乙個空棧。

()yes

]
no

1、注意括號匹配問題

2、只需提交你所編寫的演算法

#include #define max 105

typedef struct

spstack;

void initstack(spstack *&s)

bool stackempty(spstack *s)

bool push(spstack *&s,char e)

bool gettop(spstack *s,char &e)

bool pop(spstack *&s,char &e)

void destroystack(spstack * &s)

int solve(char *a,spstack *st)

'||a[i]==']')

else if(a[i]=='}'&&gettop(st,e)==true)

else if(a[i]==']'&&gettop(st,e)==true)

else match=false;

}i++;

}if(!stackempty(st))match=false;

return match;

}int main()

Problem C 括號匹配(棧和佇列)

time limit 1 sec memory limit 128 mb submit 76 solved 18 submit status web board 假設乙個表示式中只允許包含三種括號 圓括號 和 方括號 和 和花括號 且這三種括號可按任意的次序巢狀使用如 設計乙個演算法,判斷表示式中的...

棧和佇列 用棧實現括號匹配

一 棧匹配 思路 借助棧來實現括號的匹配,如果碰到的是三種左括號的話,將左括號進行入棧,以為需要匹配到括號肯定都是右括號於左括號進行匹配的,所以遇到左括號直接入棧就可以了。如果遇到右括號,需要進行匹配,如果目前棧中為空的話,直接返回false,因為這個括號很明顯的多出來了。如果不為空,將棧中的乙個元...

括號匹配(棧與佇列)

描述 給定乙個字串,字串只包含兩種字元 左括號 和右括號 請判斷這些括號是否能匹配。如果能則輸出yes,不能則輸出no。輸入 一行,括號序列 乙個字串 輸出 yes no 樣例輸入 樣例輸出 yesac 基於很水的樣例的計數 include include include using namespa...