導航:首頁 > 源碼編譯 > 演算法匹配括弧

演算法匹配括弧

發布時間:2022-07-23 11:48:05

A. 數據結構 括弧匹配演算法

樓上說的是一個原因,不過去掉!StackEmpty(S)後問題依舊。
你的原因主要是這里:
case ')':{Pop(S,e);
if(e!='(') flag=1; break;}

應該先判斷,再出棧。不能先出棧再判斷。

B. 數據結構棧應用括弧匹配演算法

演算法如下:

從左開始向右掃描該表達式,
1、如遇左括弧(不論哪一種),將該左括弧入棧;
2、如是右括弧,如棧為空則返回出錯信息,不空就檢查其是否與棧頂左括弧是否配對,如是則棧頂元素出棧後繼續掃描(轉1 ),否則,返回出錯信息(出錯類型:右括弧先出現,或左右括弧不匹配,出錯位置);
3、如是其它字元,直接跳過,繼續掃描,如表達式未完則轉1;表達式結束轉4。
4、如棧空,顯示「匹配正確!」,否則顯示「缺失右括弧!」。

C. 如何用兩種括弧()和[]設計一個演算法判斷一個算數表達式中的括弧是否匹配

include "seqstack1.h"

include "stdio.h"

void BracketMatch(char str);

void BracketMatch(char str) /*str[]中為輸入的字元串,利用堆棧技術來檢查該字元串中的括弧是否匹配

D. 數據結構括弧匹配的思想

匹配思想:從左至右掃描一個字元串(或表達式),則每個右括弧將與最近遇到的那個左括弧相匹配。則可以在從左至右掃描過程中把所遇到的左括弧存放到堆棧中。每當遇到一個右括弧時,就將它與棧頂的左括弧(如果存在)相匹配,同時從棧頂刪除該左括弧。
演算法思想:設置一個棧,當讀到左括弧時,左括弧進棧。當讀到右括弧時,則從棧中彈出一個元素,與讀到的左括弧進行匹配,若匹配成功,繼續讀入;否則匹配失敗,返回FLASE。

E. 數據結構括弧匹配的演算法問題

return0 就是不匹配,return 1 就是匹配,最後判斷棧是不是空的,棧如果是空的,說明匹配了,返回 1 ,如果不是空的,說明還有左括弧,匹配失敗

F. 括弧匹配 基本演算法

用棧的數據結構

先讀入一個括弧,如果為左括弧,入棧,否則,出錯退出
繼續讀入括弧,如果是右括弧,檢查棧,如果非空,出棧(因為不把右括弧入棧,所以棧裡面都是左括弧),如果空,出錯退出

直到讀完處理完最後一個括弧,如果這個時候棧為空,那麼成功返回true,否則返回false

G. 編寫演算法判斷表達式中的方括弧和圓括弧是否匹配

給出思路:
一個字元數組str1用來放目標字元串;
另一個字元數組str2用來放左括弧,
遍歷str1,
發現左括弧,就放入str2中,類似於入棧;
發現右括弧就進行判定
如果str2已空,不匹配,直接return
0;
如果當前右括弧類型所對應的左括弧不等於str2中最末位的左括弧;return
0;
如果當前右括弧類型所對應的左括弧類型等於str2中最末位的左括弧,把str2末尾去掉一個左括弧;
直到str1末,進行判定:
如果str2長度為零,那就是完全匹配,否則return
0。

H. 設計一個演算法檢查括弧是否匹配(寫出演算法設計思想即可)

用棧
每個元素一次和棧頂元素比較
如果棧空,進棧
如果和棧頂匹配,棧頂出棧
不匹配 進棧
最後如果棧空 括弧匹配 棧不空 不匹配

I. java 棧 如何實現括弧匹配

java棧實現括弧匹配,主要是使用棧隊列演算法,如下代碼:

importjava.util.Scanner;
importjava.util.Stack;

/**
*@authorOwner
*
*/
publicclassMain{

publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);

intn=sc.nextInt();//3條測試數據數據

Stack<Character>stack=null;

while(n!=0){

//從控制台讀入一個測試字元串[]()[(])
Stringstr=sc.next();
//如果該輸入字元串為奇數,說明不匹配
if(str.length()%2==1){
System.out.println("No");
}else{
//說明字元是偶數
stack=newStack<Character>();

//遍歷第一條測試字元串[]()[(])
for(inti=0;i<str.length();i++){
if(stack.isEmpty()){
//如果棧是空的
stack.push(str.charAt(i));
}elseif(stack.peek()=='['&&str.charAt(i)==']'||stack.peek()=='('&&str.charAt(i)==')'){
//說明此時棧中字元不是空的,並且符合,
stack.pop();
}else{

stack.push(str.charAt(i));
}
}

if(stack.isEmpty()){
//如果棧是空的,說明括弧匹配
System.out.println("Yes");
}else{
//說明棧不為空,括弧不匹配
System.out.println("No");
}
}

n--;
}

}
}
閱讀全文

與演算法匹配括弧相關的資料

熱點內容
解壓球的正確方法 瀏覽:186
python開發的程序運行速度 瀏覽:494
基於單片機的pcf8591 瀏覽:785
暑假python培訓班在哪 瀏覽:508
見頂之紅選股器源碼公式 瀏覽:221
邏輯加密卡怎麼樣 瀏覽:268
下載和解壓有先後順序嗎 瀏覽:527
svn教程linux 瀏覽:720
同花順app股票賬戶怎麼綁定銀行卡 瀏覽:495
用python爬豆瓣數據 瀏覽:711
androidedittext長度限制 瀏覽:247
紅警3命令與征服蘇聯 瀏覽:407
25歲學習當程序員好嗎 瀏覽:982
autojs源碼解析 瀏覽:728
外分加密是啥意思 瀏覽:691
如何克隆有加密狗的u盤 瀏覽:748
單片機功率電路 瀏覽:571
如何加密隱私安全 瀏覽:601
加密狗登錄界面彈補出來 瀏覽:336
linux遠程x 瀏覽:360