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

演算法匹配括弧

發布時間: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--;
}

}
}
閱讀全文

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

熱點內容
安卓手機賬戶忘記密碼怎麼解鎖 瀏覽:821
如何用健身app確定一個特工 瀏覽:911
多級壓縮的原理 瀏覽:864
java項目開發案例視頻 瀏覽:70
文件夾快速查找表格不同內容 瀏覽:493
合並排序演算法java 瀏覽:920
如何將文件夾刪除的部分恢復 瀏覽:808
eco為什麼連接不上伺服器 瀏覽:294
查看linux的命令是 瀏覽:12
蘋果郵件伺服器地址 瀏覽:343
U盤超級加密3000時間 瀏覽:737
如何跟別人解釋什麼是伺服器 瀏覽:939
安卓11原生如何隱藏軟體 瀏覽:712
解壓清潔面部女士 瀏覽:856
美的變頻空調壓縮啟動一下報p1 瀏覽:472
濟南如何申請app多少錢 瀏覽:166
帶加密功能的u盤啟動盤製作 瀏覽:819
計算機編程知識 瀏覽:436
c語言編程軟體都有哪些 瀏覽:157
解壓一半可以取消嘛 瀏覽:121