鏈棧實現括號匹配演算法

2021-10-22 17:43:30 字數 1554 閱讀 7296

封裝好棧的基本操作:初始化,出棧,入棧,判斷棧空。用字元陣列儲存使用者輸入的括號系列,遍歷陣列,如果是左括號就入棧,否則就彈出棧頂元素,將彈出的元素與該括號進行判斷,若匹配則掃瞄下乙個括號,如果匹配失敗,演算法結束,提示失敗。掃瞄完所有字元後,如果棧非空,說明匹配失敗。

typedef

struct lnode

*listack;

void

initlistack

(listack &l)

bool

pop(listack &l,

char

&x)

bool

push

(listack &l,

char x)

#include

#include

"stdlib.h"

using

namespace std;

#define initsize 10

typedef

struct lnode

*listack;

void

initlistack

(listack &l)

bool

stackempty

(listack l)

bool

push

(listack &l,

char x)

#include

#include

"stdlib.h"

using

namespace std;

#define initsize 10

typedef

struct lnode

*listack;

void

initlistack

(listack &l)

bool

stackempty

(listack l)

bool

push

(listack &l,

char x)

bool

pop(listack &l,

char

&x)int

main()

for(j; j < i;

++j)}if

(c[j]

==']')}

}if(stackempty

(l)&& flag)

cout<<

"匹配成功!"

<

else

cout<<

"匹配失敗!"

如果左括號多於右括號,陣列遍歷完畢後,棧非空------失敗

如果右括號多於左括號,陣列遍歷完畢後,最後一次必為出棧操作且出棧失敗----失敗

棧實現括號匹配

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

資料結構 鏈棧實現括號匹配

最近在學資料結構,所以發的大多數都是關於資料結構的題 括號匹配原來用動態規劃做的一道題,現在老師要用棧來實現,用就用吧,還不讓用函式,只能用鏈棧,不開森 很簡單的思路,如果是 就看棧頂元素是否匹配,匹配就往下操作,如果表示式完了,棧不為空,不匹配 如果棧空了,表示匹配 下面是 的實現 include...

用棧實現括號匹配的演算法

要求 用棧的基本操作實現括號匹配演算法,要求至少包括兩種型別的括號。下面的 是我的一些思路,並不算最優的,大家學習就好啦 include include define max 5 初始建立棧的容量 define add 5 棧滿時新增的容量 typedef char elemtype typedef...