輸入乙個括號字串,依次檢驗,若為左括號則則入棧,若為右括號則出棧乙個字元判斷是否與之相對應,在最後還需判斷棧是否為空,如果不為空則不匹配。
首先回顧棧的基本知識:
定義棧的結構體並初始化乙個新棧:
struct出棧和入棧操作:stack
;void initstack(stack &s)
char push(stack &s,char判斷棧是否為空:a) s.top++;
s.strstack[s.top]=a;
returna;}
char pop(stack &s)
char a=s.strstack[s.top];
s.top--;
return
a;}
int empty(stack &s,int以上是棧的基本操作,定義乙個棧和初始化乙個新棧,出棧和入棧操作,以及判斷棧是否為空的情況。接下來將寫乙個函式,檢查字串的每個字元,左括號則進行入棧操作,右括號則進行出棧操作看其是否匹配,最後判斷是否為空以判定是否匹配。**如下:re)
else
}
int check(char *str)自此,括號字串匹配的判斷問題已經解決,下面貼出完整的經過編譯執行過的**。break
;
case']
':if(pop(s)!='['
)
break
;
case'}
':if(pop(s)!='
break
; }
}int re=0
; re=empty(s,re);
if(re==1
)
else
}
view code
#include #include#include
using
namespace
std;
#define stacksize 100
struct
stack
;void initstack(stack &s)
char push(stack &s,char
a) s.top++;
s.strstack[s.top]=a;
returna;}
char pop(stack &s)
char a=s.strstack[s.top];
s.top--;
returna;}
int empty(stack &s,int
re)
else
}int check(char *str)
break
;
case']
':if(pop(s)!='['
)
break
;
case'}
':if(pop(s)!='
break
; }
}int re=0
; re=empty(s,re);
if(re==1
)
else
}void
main()
else
if(re==0
)
}
利用棧判斷字串括號是否匹配
任務描述 本關任務 基於棧stack資料結構判斷字串中的括號是否匹配,字串中僅包含如下字元 相關知識 為了完成本關任務,你需要掌握 1.如何建立乙個棧,2.入棧 出棧操作。演算法思想 輸入符號串str 初始化棧s for i 0 str i 0 i 掃瞄括號串 若棧不空,則匹配不成功,否則匹配成功 ...
python棧 字串反轉,括號匹配
棧的實現 1 定義乙個棧類 2class stack 3 棧的初始化 4def init self 5 self.items 6 判斷棧是否為空,為空返回true 7def isempty self 8return self.items 9 向棧內壓入乙個元素 10def push self,ite...
字串括號匹配檢查
include stdafx.h struct charstack char c struct node pnext struct node ptop charstack void push char c else char pop bool ismatch char str break case ...