實驗內容
算術表示式中右括號和左括號匹配的次序正好符合後到括號要最先被匹配的「後進先出」堆疊操作特點,因此可以借用乙個堆疊來進行判斷。
具體方法:
⑴ 順序掃瞄算術表示式(表現為乙個字串);
⑵ 當遇到三種型別的左括號時,讓該括號進棧;
⑶ 當遇到某一種型別的右括號時,比較當前棧頂括號是否與之匹配,
⑷ 若匹配則退棧,轉(1)繼續進行判斷;
⑸ 若不匹配,則左右括號配對次序不正確,結束。
⑹ 若字串當前為某一型別的右括號而堆疊為空,則右括號多於左括號,結束。
⑺ 若字串掃瞄結束而堆疊非空,則左括號多於右括號,結束。
⑻ 若字串掃瞄結束而堆疊為空,則左右括號匹配正確,結束。
#include #include#define bool int
#define true 1
#define false 0typedef
struct
stack sqstack;
int initstack(sqstack*s)
return0;
}int pushstack(sqstack* s, char
a) int popstack(sqstack*s)
bool empty(sqstack*s)
return
true;}
intmain()
else
if (c[i] == '
)' || c[i] == '
}' || c[i] == ']'
)
i++;
while (c[i] != '\0'
)
else
if (c[i] == '
)' || c[i] == '
}' || c[i] == ']'
)
') || (c1 == '
[' && c[i] == ']'
)))
}else
}i++;
}printf("%d
", flag);
return
flag;
}
好了,我們下回見,peace
D 實驗9 1 括號匹配
問題描述 任意給定乙個字串,字串中包含除了空格 換行符之外的任意字元。你的任務是檢測字串中的小括號是否配對,即 與 是否配對。如字串 a b c d 中小括號是配對的,而 a b c d 則不配對。輸入與輸出要求 輸入乙個長度不超過100的非空字串,該字串中不會出現空格 換行符。輸出檢測結果。程式執...
D 實驗9 1 括號匹配
題目描述 問題描述 任意給定乙個字串,字串中包含除了空格 換行符之外的任意字元。你的任務是檢測字串中的小括號是否配對,即 與 是否配對。如字串 a b c d 中小括號是配對的,而 a b c d 則不配對。輸入與輸出要求 輸入乙個長度不超過100的非空字串,該字串中不會出現空格 換行符。輸出檢測結...
資料結構實驗之棧四 括號匹配(棧的運用)
time limit 1000ms memory limit 65536k 有疑問?點這裡 給你一串字元,不超過50個字元,可能包括括號 數字 字母 標點符號 空格,你的任務是檢查這一串字元中的 是否匹配。輸入資料有多組,處理到檔案結束。如果匹配就輸出 yes 不匹配輸出 no sin 20 10 ...