時間限制: 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...