棧的簡單應用之括號匹配

2021-08-20 07:34:26 字數 1507 閱讀 1528

#include

#include

#include

#define emptytos    

(-1)

#define minstacksize  

( 5 )

typedef char elementtype ;

struct stackrecord

;typedef struct stackrecord *stack;

int isempty(stack s);

//判空函式 

int isfull(stack s);

//排滿函式 

stack creatstack(int maxelement);

//建立大小為maxelement的棧 

void disposestack(stack s);

//銷毀棧 

void makeempty(stack s);

//清空棧 

void push(elementtype x,stack s);

//入棧 

elementtype top(stack s);

//棧頂元素 

void pop(stack s);

//出棧 

elementtype topandpop(stack s);

//出棧並返回棧頂元素 

int main(void)

if(!isempty(s)) printf("top = %c\n",top(s));

//printf("%d\n",a[i] - top(s));

if( (a[i] - top(s))  == 2)

// '[' 與 ']','('與')' 的值差2 

pop(s);

//if(!isempty(s)) printf("i = %d  top = %c\n",i,top(s));

}if(isempty(s))

printf("yes");

else 

printf("no");

return 0;

} stack creatstack(int maxelement)

//建立大小為maxelement的棧 

void disposestack(stack s)

//銷毀棧 

}int isempty(stack s)

//判空 

int isfull(stack s)

//判滿 

void makeempty(stack s)

//清空棧 

void push(elementtype x,stack s)

//入棧 

elementtype top(stack s)

//取棧頂元素 

}void pop(stack s)

//出棧 

elementtype topandpop(stack s)

//出棧並取棧頂元素 

}

棧的應用之括號匹配

在許多正文中都有括號,特別是在表示程式 數學表示式的正文片段裡,括號有正確配對問題。作為例子,下面考慮python程式裡的括號,在這裡可以看到 不難總結出檢查括號配對的原則 在掃瞄正文過程中,遇到的閉括號應該與此前最近遇到且尚未獲得匹配的開括號配對。如果最近的未匹配開括號與當前閉括號不配對,或者找不...

棧的應用之括號匹配

給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。將左括號進棧,當遇到右括號時與棧頂元素進行括號匹配,左右括號不匹配或者棧為空時退出,匹配則彈出棧頂元素,最後判斷棧是否為空,為空則說明所有的括號都匹配了,反之則存在不匹配的括號...

棧的應用之括號匹配檢驗

棧結構具有後進先出的固有特性,在程式設計中很有幫助。這裡舉乙個例子,將棧應用與括號匹配的檢驗。假設表示式中允許三種括號 小括號 中括號和大括號,巢狀的順序任意。等均為正確格式。檢驗括號是否匹配可用 期待的急迫程度 來描述。接收乙個正括號後,計算機期待著乙個與之匹配的反括號。如果此時接收到乙個反括號,...