順序棧判斷表示式的括號匹配

2021-10-08 21:29:46 字數 1340 閱讀 8034

**如下:

#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...