通過棧實現括號匹配

2021-07-31 14:39:11 字數 834 閱讀 9718

首先輸入乙個待匹配的括號序列,如果是左括號將其壓入棧中,如果是右括號則與當前棧頂的括號相匹配(左中括號匹配右中括號,左小括號匹配右小括號)。

#include

#include

#define maxsize 100

using

namespace std;

typedef

char elemtype;

typedef

struct

sqstack;

// 棧頂指標指向棧頂元素

void

initstack

(sqstack *st)

//初始化棧

intstackempty

(sqstack *st)

//判斷棧為空

void

push

(sqstack *st,elemtype x)

//元素進棧

else

}void

pop(sqstack *st,elemtype *e)

//出棧

else

}int

main()

else

if(brackets[count]

==']'

|| brackets[count]

==')'

)else

} count++;}

//fflush(stdin);

if(st-

>top ==-1

)printf

("匹配成功\n");

else

}

棧實現括號匹配

匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從棧頂刪除該左括號。演算法思想 設定乙個棧,當讀到左括號時,左括號進棧。當讀到右括號時,則從...

用棧實現括號匹配

假設只允許出現兩種括號 圓括號和方括號,其巢狀順序隨意,即不管 或 等都為正確匹配,但是形如 就成為錯誤的匹配。可以用 期待的緊急程度 的概念來描述 如 共8個括號,從左往右依次標代號為1 8,即第乙個 代號為1,第二個 代號為2,第三個 代號為3,依次類推 當計算機收到了第乙個括號後,期待它與第八...

順序棧實現括號匹配

採用順序棧程式設計實現 表示式的括號是否匹配問題。要求 輸入帶括號的表示式,判斷其中括號是否配對。擴充套件功能 給出配對括號的位序和不配對括號的位序。include include include include include define overflow 2 define stack init...