資料結構 棧在括號匹配中的應用

2021-08-29 15:52:57 字數 1321 閱讀 8673

所謂括號校驗匹配其實質是對多種型別括號正確配對的校驗(包括:()、、{})即()或者[()]為正確的表示式,如果出現交叉則匹配失敗,如[(])或([())則為不正確格式。

該程式也運用了棧的思想。若是左括號則入棧,若是右括號則看是否和當前棧頂元素是否匹配。若是則出棧,不是則當前表示式括號不匹配。

程式思想:

1.初始設定乙個空棧,順序讀入括號。

2.若是右括號,則使置於棧頂的元素出棧與之匹配,若是括號序列不匹配,則退出程式

3.若是左括號,則將元素壓入棧中,演算法結束時,棧為空,否則括號序列不匹配

以下為示例**:

//棧應用之校驗括號的匹配

#include "stdafx.h"

#include "string.h"

#define elementtype char

#define maxsize 10

//定義結構體

typedef struct sqstack;

/*初始化棧

*/void initstack(sqstack &s)

/*判斷棧是否為空

*/bool stackempty(sqstack s)

return false;}/*

入棧*/

bool pushstack(sqstack &s,elementtype e)

s.top++;

s.data[s.top] == e;

s.size++;

return true;}/*

出棧*/

elementtype popstack(sqstack &s)

elementtype e = s.data[s.top];

s.top--;

s.size--;

return e;}/*

校驗括號是否匹配

*/bool checkmatch(char *str)

break;

case ']':

e = popstack(stack);

if (e != '[')

break;

case '}':

e = popstack(stack);

if (e != '

break;

} }bool b = stackempty(stack);

if (b)

return false;

}void main() )]";

bool b = checkmatch(str);

if (b)

else

}

資料結構 棧的應用 括號匹配

include include include 鏈式棧 括號匹配校驗 define success 0 define failure 1 typedef struct nodestnode def typedef struct linkstackstlinkstack def typedef voi...

資料結構 棧的應用 括號匹配的檢驗

棧的應用 括號匹配的檢驗 演算法內容 以此掃瞄所有字元,遇到左括號入棧,遇到右括號則彈出棧頂元素檢查是否匹配。匹配失敗的情況 1.左括號單 2.右括號單 3.左右括號不匹配 include include define maxsize 10 定義棧中元素的最大個數 typedef struct sq...

資料結構之棧(2 1)應用 括號匹配

編寫乙個演算法,判斷鍵盤輸入的表示式是否配對。假設括號只包含 1 所謂括號配對,就是 2 輸入的字串中,可能包含 也可能沒有 數字,及其他符號。3 每當掃瞄字串元素 現 需要進行括號匹配檢查。檢查方式為 看最近出現的 而用什麼儲存 呢?棧是選擇之一。那棧的儲存狀態是,要麼有 要麼為空。4 根據以上分...