根據棧的先進後出特點
將遇到的左括號依次壓入棧中
遇到右括號時取出棧頂元素(退棧處理)
比較棧頂元素和輸入的括號是否想匹配
注意 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 編寫判斷表示式括號是否匹配的程式。表示式為字串。解題思路 解決括號匹配問題我們要考慮的是優先順序,大家學過數學的都知道要想解決這類算式我們要做的就是去括號,去括號不能隨便去,要先去除最後...