括號匹配問題 棧

2021-08-08 17:07:41 字數 898 閱讀 4418

根據棧的先進後出特點

將遇到的左括號依次壓入棧中

遇到右括號時取出棧頂元素(退棧處理)

比較棧頂元素和輸入的括號是否想匹配

注意 1.判斷的字串流的奇偶性

2.注意輸入的字元是否為所需的括號字元

3.考慮棧的棧頂和棧底是否溢位

4.棧在開始和結束時都應該是空的.所以匹配到最後還要判斷棧是否為空,若非空,則匹配失敗

#include

#include

#include

#define max_size 100

typedef

struct

stack;

//初始化棧

void init(stack *s)

//進棧

int push(stack *s,char n)

//出棧

int pop(stack *s,char *n)

//判斷棧是否為空

int empty(stack *s)

//取棧頂

int get_top(stack *s,char *n)

//括號匹配

int match(stack *s,char *string)

': pop(s,&n);

if(n != '

if(flag)break;

i++;

} if(flag == 0 && empty(s) == 0 && strlen(string) % 2 == 0)

printf("括號匹配成功!\n");

else

printf("括號匹配失敗!\n");

} int main()

括號匹配問題(棧模擬)

在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註,不能匹配的右括號用 標註.輸入包括多組資...

括號匹配問題 順序棧

思想 每讀入乙個括號 1 若是左括號,則直接入棧,等待相匹配的同類右括號。2 若是右括號,且與當前棧頂的左括號同型別,則二者匹配,將棧頂的左括號出棧,否則屬於不合法的情況。include include define true 1 define false 0 define stack size 5...

棧解決括號匹配問題

題目 假設乙個表示式中可以包含三種括號 小括號,中括號,大括號,且這三種括號可以任意次序巢狀使用,如 3 5 4 編寫判斷表示式括號是否匹配的程式。表示式為字串。解題思路 解決括號匹配問題我們要考慮的是優先順序,大家學過數學的都知道要想解決這類算式我們要做的就是去括號,去括號不能隨便去,要先去除最後...