括號匹配問題 棧c語言 用棧實(shí)現(xiàn)檢驗(yàn)括號匹配的算法?
用棧實(shí)現(xiàn)檢驗(yàn)括號匹配的算法?我們的想法是推進(jìn)堆棧,得到前半個(gè)括號,標(biāo)記它,繼續(xù)進(jìn)入堆棧,直到得到第二個(gè)匹配的外括號,然后從堆棧中取出內(nèi)容。就這樣。用棧檢測括號匹配?這是與括號匹配的函數(shù)部分:以下是與括
用棧實(shí)現(xiàn)檢驗(yàn)括號匹配的算法?
我們的想法是推進(jìn)堆棧,得到前半個(gè)括號,標(biāo)記它,繼續(xù)進(jìn)入堆棧,直到得到第二個(gè)匹配的外括號,然后從堆棧中取出內(nèi)容。就這樣。
用棧檢測括號匹配?
這是與括號匹配的函數(shù)部分:以下是與括號匹配的函數(shù)部分:
]voidmatch(seqsstacks,char*STR)//比較括號
!“n-
多余的右支架!n “
]exit(0)]}
]else
{
ch=gettop(&)
if(compare(ch,STR[i])
Pop(&)
else
{
printf(”n-u-
相應(yīng)的左括號和右括號屬于不同的類!n“”
exit(0)
}
}
}
]如果(getop&)=“”
printf(“”)]n^ ^ ^方括號匹配^ ^ n“”
else
{
printf(“n--要解決堆棧問題,我們遇到了左方括號堆棧,右方括號將堆棧從堆棧中展開。當(dāng)堆棧出來時(shí),我們判斷它是否匹配,當(dāng)掃描結(jié)束時(shí)堆棧為空時(shí),它將匹配,否則它不匹配
(loop with stack=“()
!](loop with stack=“()
!for charross”[{(({(()()
!]((((((()(push char stack))
(否則(if(eq(car stack)(getf close char))
(pop stack)
(return nil)))
最后(return t))