/*
*僅對圓括號(),方括號<>,花括號{}進行校驗;
*演算法:建立乙個空棧,讀入字元至檔案尾,如果是
*開放字元將其壓棧,如果是閉合字元,此時棧空則
*報錯,否則從棧中彈出乙個字元,如果不是對應的開
*放字元,則報錯,在檔案尾棧非空報錯。
*/#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 ...