欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)中綴轉(zhuǎn)后綴的示例詳解

 更新時(shí)間:2022年09月26日 16:03:03   作者:是皮蛋瘦肉周  
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)中綴轉(zhuǎn)后綴的問(wèn)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

單位數(shù)加減乘除

例如:2+3*(4-9)

定義一個(gè)棧內(nèi)優(yōu)先級(jí)

運(yùn)算符號(hào)優(yōu)先級(jí)
+、-3
*、/5
(1
)6
#0

定義一個(gè)棧外優(yōu)先級(jí)

運(yùn)算符號(hào)優(yōu)先級(jí)
+、-4
*、/2
(6
1
#0

整個(gè)過(guò)程如下:

首先將#入棧,這是為了讓運(yùn)算符與棧內(nèi)的符號(hào)進(jìn)行比較是否入棧,否則無(wú)法判斷

  1. 2為數(shù)字,直接輸出
  2. +和#進(jìn)行運(yùn)算符比較,因?yàn)?的優(yōu)先級(jí)大于#,入棧
  3. 3為數(shù)字,直接輸出
  4. (和+進(jìn)行比較,(的優(yōu)先級(jí)比+大,將+取出輸出,將(入棧
  5. 4為數(shù)字,直接輸出
  6. -的優(yōu)先級(jí)比’(‘大,直接入棧。注意:此時(shí)的’('為棧內(nèi)優(yōu)先級(jí)
  7. 9為數(shù)字。直接輸出
  8. )優(yōu)先級(jí)比-大,取出-,同時(shí)()配對(duì)了,也要將(取出
  9. 最后遍歷棧內(nèi)運(yùn)算符即可

需要注意的點(diǎn)是:

就像這樣棧內(nèi)的頭頂兩個(gè)元素這樣(+,下一個(gè)符號(hào)剛好是),需要考慮到,取完+號(hào)后,需要把(也去取出來(lái)

實(shí)現(xiàn)代碼

#include<iostream>
#include<stack>
#include<string>
using namespace std;
//棧內(nèi)優(yōu)先級(jí)
int CompareIn(char c){
	if(c=='('){
		return 1;
	}
	if(c=='+'||c=='-'){
		return 3;
	}
	if(c=='*'||c=='/'){
		return 5;
	} 
	if(c==')'){
		return 6;
	}
	if(c=='#'){
		return 0;
	}
}
//棧外優(yōu)先級(jí) 
int CompareOut(char c){
	if(c=='('){
		return 6;
	}
	if(c=='+'||c=='-'){
		return 2;
	}
	if(c=='*'||c=='/'){
		return 4;
	} 
	if(c==')'){
		return 1;
	}
	if(c=='#'){
		return 0;
	}
}
int main(){
	string str;
	cin>>str;
	stack<char> q;
	q.push('#');
	for(int i=0;i<str.length();i++){		
		if('1'<=str[i]&&str[i]<='9'){
			cout<<str[i];
		}else{
			if(CompareIn(q.top())<CompareOut(str[i])){
				q.push(str[i]);
			}else if(CompareIn(q.top())==CompareOut(str[i])){
				q.pop();
			}else if(CompareIn(q.top())>CompareOut(str[i])){
				char ch=q.top();
				q.pop();
				cout<<ch;
				if(str[i]!=')'){
					q.push(str[i]);
				}	
			   if(CompareIn(q.top())==CompareOut(str[i])){
				q.pop();
		    	}
			}
		}
	}
	while(CompareIn(q.top())!=0){
		cout<<q.top();
		q.pop();
	}
	
}
}

到此這篇關(guān)于C++實(shí)現(xiàn)中綴轉(zhuǎn)后綴的示例詳解的文章就介紹到這了,更多相關(guān)C++中綴轉(zhuǎn)后綴內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中變量與其內(nèi)存地址對(duì)應(yīng)的入門(mén)知識(shí)簡(jiǎn)單講解

    C語(yǔ)言中變量與其內(nèi)存地址對(duì)應(yīng)的入門(mén)知識(shí)簡(jiǎn)單講解

    這篇文章主要介紹了C語(yǔ)言中變量與其內(nèi)存地址對(duì)應(yīng)的入門(mén)知識(shí)簡(jiǎn)單講解,同時(shí)這也是掌握指針部分知識(shí)的基礎(chǔ),需要的朋友可以參考下
    2015-12-12
  • C語(yǔ)言高級(jí)教程之變長(zhǎng)數(shù)組詳解

    C語(yǔ)言高級(jí)教程之變長(zhǎng)數(shù)組詳解

    這篇文章主要介紹了C語(yǔ)言中變長(zhǎng)數(shù)組的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 在C++17中實(shí)現(xiàn)無(wú)鎖數(shù)據(jù)結(jié)構(gòu)的方法詳解

    在C++17中實(shí)現(xiàn)無(wú)鎖數(shù)據(jù)結(jié)構(gòu)的方法詳解

    在探索?C++17?中的無(wú)鎖數(shù)據(jù)結(jié)構(gòu)之前,我們首先需要理解無(wú)鎖編程的基本概念及其在現(xiàn)代軟件開(kāi)發(fā)中的重要性,在這個(gè)章節(jié)中,我們將深入探討無(wú)鎖編程的概念,以及它如何滿(mǎn)足人類(lèi)對(duì)于更高效、更可靠軟件的本能需求,文中通過(guò)代碼示例介紹的非常詳細(xì),感興趣的朋友可以參考下
    2023-12-12
  • 詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池的相關(guān)資料,設(shè)計(jì)內(nèi)存池的目標(biāo)是為了保證服務(wù)器長(zhǎng)時(shí)間高效的運(yùn)行,通過(guò)對(duì)申請(qǐng)空間小而申請(qǐng)頻繁的對(duì)象進(jìn)行有效管理,減少內(nèi)存碎片的產(chǎn)生,合理分配管理用戶(hù)內(nèi)存,需要的朋友可以參考下
    2021-08-08
  • C 與 C++ 接口函數(shù)相互調(diào)用的實(shí)現(xiàn)

    C 與 C++ 接口函數(shù)相互調(diào)用的實(shí)現(xiàn)

    這篇文章主要介紹了C 與 C++ 接口函數(shù)相互調(diào)用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • OpenCV實(shí)現(xiàn)輪廓的發(fā)現(xiàn)

    OpenCV實(shí)現(xiàn)輪廓的發(fā)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了OpenCV如何實(shí)現(xiàn)輪廓的發(fā)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C語(yǔ)言冒泡排序法的實(shí)現(xiàn)(升序排序法)

    C語(yǔ)言冒泡排序法的實(shí)現(xiàn)(升序排序法)

    這篇文章主要介紹了C語(yǔ)言冒泡排序法的實(shí)現(xiàn)(升序排序法),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C++中指針和引用的區(qū)別詳解

    C++中指針和引用的區(qū)別詳解

    這篇文章主要介紹了C++中指針和引用的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C++空間命名的使用

    C++空間命名的使用

    本文主要介紹了C++空間命名的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C語(yǔ)言中的指針新手初階指南

    C語(yǔ)言中的指針新手初階指南

    指針是C語(yǔ)言的靈魂,精華之所在,指針強(qiáng)大而危險(xiǎn),用得好是一大利器,用得不好是一大潛在危害,下面這篇文章主要給大家介紹了C語(yǔ)言中指針的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10

最新評(píng)論