棧的應用 平衡符號

2021-07-10 11:49:18 字數 661 閱讀 9248

/*

*僅對圓括號(),方括號<>,花括號{}進行校驗;

*演算法:建立乙個空棧,讀入字元至檔案尾,如果是

*開放字元將其壓棧,如果是閉合字元,此時棧空則

*報錯,否則從棧中彈出乙個字元,如果不是對應的開

*放字元,則報錯,在檔案尾棧非空報錯。

*/#include

#include

struct node;

typedef

struct node *ptrtonode;

typedef ptrtonode stack;

typedef

char elementtype;

struct node

;void push(elementtype ch,stack s)//插入在表頭

int isempty(stack s)

elementtype top(stack s)//表頭為棧頂

void pop(stack s)

}int relevantch(char ch1,char ch2)//兩字元匹配則返回0

')||(ch1=='}'&&ch2=='

int main()

else}}

}return

0;}

棧應用 平衡符號

平衡符號用於編譯器檢查程式的語法錯誤,每乙個 右括號 必然對應其相應的 左括號 eg 合法 不合法 演算法描述 做乙個空棧,讀入字元直到檔案尾 如果字元是乙個左括號則將其壓入棧,如果字元是乙個右括號 如此時棧空,報錯 否則,彈出棧頂元素,若與相應的左括號不匹配,報錯 到檔案尾,棧非空則報錯 演算法分...

基於棧的平衡符號匹配問題

棧的實現 基於vector順序容器的棧的實現 ifndef weiwei h define weiwei h includeusing std vector templateclass stack void push const object val object pop object top bo...

棧的應用 左右符號匹配

在編譯器中,都有這麼乙個左右符號匹配的功能,這裡通過棧來模擬實現這一功能 這裡採用了 復用的方法,即使用了linkstack鏈棧,詳見 linkstack鏈棧 main.c include include include linkstack.h 判斷是否為左符號 int isleft char c ...