1. 程式人生 > >利用棧實現括號匹配

利用棧實現括號匹配

(1)右括號總是與最近的左括號匹配

(2)從左往右遍歷字串,遇到左括號就入棧,然後遇到右括號時就把它與棧頂出元素對應的左括號匹配

(3)當棧為空時遇到右括號則此右括號無匹配的左括號

(4)當最終右括號匹配完畢後棧內還有剩餘元素則表明這些位置的左括號沒有與之匹配的右括號

void printMatchedPairs(string exper)

{

int length=(int) exper.size();//字串的長度

arrarStack<int> s;//利用陣列實現的棧,棧中元素為整型儲存左括號在字串中的位置



//掃描字串尋找左括號和右括號

for(int i=0;i<length;i=+)

{

if(exper.at(i)=='(')//當找到左括號時把其序號入棧

s.push(i);

else

     if(exper.at(i)==')')
try//有棧可能為空的異常

{

cout<<s.top()<<" "<<i<<endl;//在i處的右括號和棧中最頂端元素處的左括號匹配

s.pop();

}

catch(stdckEmpty){

cout<<"在此處的右括號沒有找到匹配的做括號"<<endl;

}

}

while(!s.empty())//若此時棧還不為空,則有做括號沒有匹配的右括號

{

cout<<s.top()<<"處的左括號沒有匹配的右括號"<<endl;

s.pop();

}



}

相關推薦

利用實現括號匹配演算法!

演算法:檢測表示式中的字元,若是左括號就入棧,如果是右括號就出棧一個元素與其配對,配對成功則繼續訪問下一個字元,否則退出。出現非括號字元則跳過。 #include <stdio.h> #i

利用實現括號匹配

(1)右括號總是與最近的左括號匹配(2)從左往右遍歷字串,遇到左括號就入棧,然後遇到右括號時就把它與棧頂出元素對應的左括號匹配(3)當棧為空時遇到右括號則此右括號無匹配的左括號(4)當最終右括號匹配完畢後棧內還有剩餘元素則表明這些位置的左括號沒有與之匹配的右括號void pr

順序實現括號匹配

2018-11-10-21:38:07 1 /********************************************************* 2 順序棧實現括號匹配。 3 main函式操作: 4 1.在這裡main函式內部主要以解決括

基於實現括號匹配演算法

括號匹配演算法在各種編輯器中使用的非常多,其實基於棧來實現是非常簡單的。程式碼如下: /** * 括號匹配 * * @author Dongguabai * @date 2018/9/12 1

資料結構作業 實現 括號匹配 問題

資料結構作業  棧  實現 括號匹配 問題 畢竟太菜 照著demo敲了幾天才 搞定。 棧的幾個基本應用函式順便敲了  其他的就不詳說了. 見程式碼: #include <stdio.h> #include <stdlib.h> #define OK

c語言實現括號匹配

在文書處理軟體或編譯程式設計時,常常需要檢查一個字串或一個表示式中的括號是否相匹配? 匹配思想:從左至右掃描一個字串(或表示式),則每個右括號將與最近遇到的那個左括號相匹配。則可以在從左至右掃描過程中

簡單演算法——使用實現括號匹配檢驗

設計一個演算法判定一個算術表示式中的括號是否正確配對(包括三種括號並且需要考慮大中小三種括號的巢狀順序), 並將對應的程式除錯執行通過。 演算法思想: 暫不考慮資料元素的運算,只考慮括號的配對。則有兩個概念:對右括號期待的急迫程度和當前括號的優先順序。因此

《資料結構》嚴蔚敏 用實現括號匹配檢驗

思路:將符合要求的符號"[“和”(“新增到棧中,然後將每一次輸入的”]“和”)"與棧頂元素利用ascii碼值來進行比較,如果匹配則將棧中壓入的元素彈出,否則繼續匹配下一個。當輸入結束符“#”時,若棧為空,則匹配成功,否則,匹配失敗 核心程式碼: int match(char p,char

使用實現括號匹配

實現 #include <iostream> #include <stdlib.h> #include "MyStack.h" using namespace std

20. Valid Parentheses(用實現括號匹配)

ise || character output sam char span arr NPU Given a string containing just the characters ‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘ and ‘]‘, determine if

資料結構:用連結串列實現括號匹配

完成以下程式,並在右邊空白處,對錯誤進行修改,並記錄下程式執行結果: 1. 編寫演算法,判斷一表達式中的括號是否配對,包括大、中、小三類括號。 連結串列版本: #include <cstdio> #include <cmath> #inclu

C語言實現順序括號匹配

//順序棧的使用舉例:括號的匹配 #include <stdio.h> #include <stdlib.h> #define OK      1 #define ERROR   0 #define TRUE    1 #define FALSE  

Java實現判斷括號匹配問題

Stack的用例Parentheses,輸入一串括號用棧判斷其中的括號是否匹配,例如[()]{()}程式列印true,對於[](則列印false。 思路: 遇到左括號入棧,遇到右括號時先檢查棧是否為空,若空則返回false,若不空則彈出棧頂元素看與右括號是否

C語言中利用檢測括號是否匹配

檢測括號是否匹配的演算法中,棧的特性是最符合括號特點的。棧的先進後出將括號的匹配正好完美實現。 思想: 從字串開頭向後逐個檢測,檢測到除括號外的元素就跳過。檢測到左括號時,就進行入棧操作,繼續向後檢測

通過實現括號匹配

我們通過順序表建立一個棧 如果我們需要實現一組括號的匹配,我們首先必須知道這個括號陣列當中所有的括號符號。 常見的括號符號也就 ‘[]’ ‘{}’ ‘()’,還有的一些奇奇怪怪的括號就不說了啊。 我們首先需要按思維邏輯思考,需要完成括號的左右搭配,即相同型別的括

資料結構之---C語言實現括號匹配實現

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

使用的鏈式表示,實現括號匹配檢測。

清華出版《資料結構》3.2.2 棧的鏈式表示.h #include <stdlib.h> #include <stdlib.h> #include <stdbool.h> typedef struct Node { int dat

c++利用順序解決括號匹配問題

already 括號匹配問題 是否 data ems else if alt 問題 http 題目: 7-1 括號匹配 (30 分) 給定一串字符,不超過100個字符,可能包括括號、數字、字母、標點符號、空格,編程檢查這

imooc數據結構探險-應用括號匹配二 由群友啟發改良james_yuan老師算法

false blog default img pstack 一個 alt 是否 logs 如圖所示 引用群友內容 //老師代碼有點麻煩了,不用聲明兩個mystack的,直接判斷是否是左括號, //是的話就在mystack中push另一半括號;如果是右括號且又不是需要

利用實現進制轉換

保存 include push code ott travel ++ efi 位置 #include<stdio.h>#include<malloc.h> #define MAX_STACK_SIZE 10//靜態棧向量大小 #define ERR