順序棧的應用括號匹配問題

2021-10-03 03:08:01 字數 1349 閱讀 4821

利用程式設計檢查這一串字元中的( ) ,[ ],是否匹配

解決思路:利用棧將字串的()的時候取出一位來和棧頂判斷是否相等。充分利用棧空間的特點。

#include

#define m 100

using

namespace std;

typedef

struct stack

stacktype;

//別名設定

bool

judge

(stack* s)

;//判斷棧空

bool

judgefree

(stack* s)

;//判斷棧滿,是否會溢位

bool

push

(stack* s,

char x)

;//插入棧

char

pop(stack* s)

;//出棧

intmain()

";int flag =0;

for(

auto ch:arr)

//基於c++11的範圍for迴圈

else

if(ch ==

']'|| ch ==

'}'|| ch ==

')')')

||(a ==

'('&& ch ==

')')

||(a ==

'['&& ch ==

']')

)//匹配則為1

flag =1;

else

//不匹配的話說明以及出現錯誤,沒必要執行下去,直接退出迴圈}}

//if (judge(s))

// flag = 0;

cout <<

(flag ?

'y':

'n')

;return0;

}bool

judge

(stack* s)

else

return

(true);

}bool

judgefree

(stack* s)

else

return

(true);

}bool

push

(stack* s,

char x)

else

return

false;}

char

pop(stack* s)

else

return

'n';

//此處設定可以根據情況來定

}

順序棧的應用 括號匹配

include define maxsize 100 typedef struct sequence stack void init sequence stack st 棧的初始化 int empty sequence stack st 判斷棧是否為空 char read sequence stac...

括號匹配問題 順序棧

思想 每讀入乙個括號 1 若是左括號,則直接入棧,等待相匹配的同類右括號。2 若是右括號,且與當前棧頂的左括號同型別,則二者匹配,將棧頂的左括號出棧,否則屬於不合法的情況。include include define true 1 define false 0 define stack size 5...

順序棧括號匹配問題

使用順序棧解決括號匹配問題 括號匹配問題 包括三種型別的括號 和其他字元,判斷是否存在對應的左右括號 舉例 s 滿足條件 s 不滿足條件 include using namespace std typedef char elemtype const int maxsize 100 struct sq...