從左至右掃瞄乙個字串(或表示式),則每個右括號將與最近遇到的那個左括號相匹配。
用棧結構儲存表示式,當遇到配對符號時彈出棧頂符號和匹配符號配對。當符號配對成功則繼續配對直到棧空;當匹配失敗則返回
#include
#include
#include
typedef
struct node* ptrnode;
struct node
;typedef ptrnode stack;
stack create()
bool
is_empty
(stack s)
bool
push
(stack stack,
char data)
intpop
(stack s)
else
return0;
}stack to_top
(stack s)
return s;
}bool
judge
(char
* str,
int size)':
leftsig =
(char
)p->data;
pop(p);if
(leftsig ==
'('&& str[i]
!=')')if
(leftsig ==
'['&& str[i]
!=']')if
(leftsig =='')
default
:break;}
}if(!
is_empty
(p))
else
}int
main()
"};int len =
strlen
(seq)
;judge
(seq, len)
;}
資料結構與演算法 符號匹配(棧的用法)
完成符號匹配程式的重點 建立符號棧,並完善符號匹配的體系 class symbolstack class symbol symbol symbol ptr null class symbolstack symbolstack void remove void pop symbol ptr void ...
資料結構 匹配演算法
演算法實現 kmp kmp真是學到現在為止最頭疼的乙個演算法,嗯我是渣渣 分兩部分 一 子串的next陣列 二 迴圈遍歷。next陣列的意義是 第n項之前的若干項與第1到第next n 1項完全一樣 前驅相同 因此next陣列的尋找方式使用遞迴的想法 對於當前位置i,有開頭的最大子串長度為n 對i ...
資料結構 括號匹配
三種括號形式 輸入一段字串,判斷其括號是否匹配。如下 括號匹配問題 include include include define stack init size 100 define stackincrement 10 define error 0 define true 1 define fals...