**如下:
#include
using
namespace std;
typedef
struct sqstack //順序棧定義
sqstack;
void
initstack
(struct sqstack &sqstack)
//初始化棧
intisempty
(struct sqstack &sqstack)
//判斷棧是否空
else
return0;
}int
push
(struct sqstack &sqstack,
char x)
//插入元素x作為新的棧頂元素
sqstack.top=sqstack.top+1;
sqstack.data[sqstack.top]
=x;return1;
}int
gettop
(struct sqstack sqstack,
char
&e)//得到棧頂元素的值
e=sqstack.data[sqstack.top]
;return1;
}int
pop(
struct sqstack &sqstack,
char
&x)//刪除棧頂元素並用x返回它
x=sqstack.data[sqstack.top]
; sqstack.top=sqstack.top-1;
return1;
}int
ifmatch
(char exp,
int n)
//從字串中讀取元素,
//若為左括號則將它壓進棧中再讀取到右括號則將出棧(消除一對括號),重複此步驟直到讀完字串。若棧為空說明一對對括號消除即括號匹配,若不為空說明右括號比左括號多即不匹配
//若為右括號則直接說明不匹配
if(exp[i]
==')'
)else}}
if(isempty==1)
//棧空說明括號一對對消除則匹配
else
//棧不空說明站內還剩下未消除的左括號則不匹配
}int
main()
if(ifmatch
(exp,i)==1
)else
return0;
}
執行結果如下: 表示式括號匹配(棧)
鏈結 假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。一行 表示式 一行 yes 或 no 輸入 1複製 2 x y 1 x 輸出...
棧的應用 表示式括號匹配
時間限制 1000 ms 記憶體限制 65536 kb 假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。輸入 一行資料,即表示式。...
表示式括號匹配
假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。輸入格式 一行 表示式 輸出格式 一行 yes 或 no 輸入樣例 1 2 x y...