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

2021-07-11 02:48:20 字數 1415 閱讀 5513

time limit: 1 sec  

memory limit: 128 mb

submit: 76  

solved: 18

[submit][

status][

web board]

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

(」和「

)」,方括號「

[」和「

]」和花括號「

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

…[…]

…(…)

…]…)

。設計乙個演算法,判斷表示式中的括號是否正確配對。輸出結果為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()

括號匹配 棧

蒜頭君在紙上寫了乙個串,只包含 和 乙個 能唯一匹配乙個 但是乙個匹配的 必須出現在 之前。請判斷蒜頭君寫的字串能否括號完全匹配,如果能,輸出配對的括號的位置 匹配的括號不可以交叉,只能巢狀 一行輸入乙個字串只含有 和 輸入的字串長度不大於 50000 如果輸入括號不能匹配,輸出一行 no 否則輸出...

棧括號匹配

input 輸入包括多組測試資料,每組資料是乙個字串,字串只包含 等字元。output 對於每組資料輸出 yes 表示當前字串中的括號是匹配的,否則輸出 no 不包括引號 sampleinput sampleoutput yes no題解 利用棧 includeusing namespace std...

棧 括號匹配

括號匹配,棧的經典題目,將左括號入站,然後遇到右括號就詢問棧頂是不是與之相匹配的左括號,如果是,出棧,不是,匹配失敗。注意這個題目是多組輸入,而且包含空格,所以需要用 gets讀入。include include include include using namespace std typedef...