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