最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

單位數(shù)加減乘除

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

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

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

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

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

整個(gè)過程如下:

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

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

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

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

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

#include<iostream>
#include<stack>
#include<string>
using namespace std;
//棧內(nèi)優(yōu)先級
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)先級 
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言中static的用法詳細(xì)示例分析

    c語言中static的用法詳細(xì)示例分析

    以下是對c語言中static函數(shù)的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C語言結(jié)構(gòu)體內(nèi)存對齊問題小結(jié)

    C語言結(jié)構(gòu)體內(nèi)存對齊問題小結(jié)

    本文主要講解了C語言中結(jié)構(gòu)體的內(nèi)存對齊規(guī)則、計(jì)算方法以及影響因素,包括對齊規(guī)則的四個(gè)要點(diǎn)、內(nèi)存對齊的原因、如何修改默認(rèn)對齊數(shù)以及結(jié)構(gòu)體傳參時(shí)的注意事項(xiàng),此外,還介紹了結(jié)構(gòu)體位段的概念、內(nèi)存分配和使用注意事項(xiàng),感興趣的朋友一起看看吧
    2025-02-02
  • matlab鳥群算法求解車間調(diào)度問題詳解及實(shí)現(xiàn)源碼

    matlab鳥群算法求解車間調(diào)度問題詳解及實(shí)現(xiàn)源碼

    這篇文章主要為大家介紹了matlab鳥群算法求解車間調(diào)度的問題分析及實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • 簡單講解C語言中宏的定義與使用

    簡單講解C語言中宏的定義與使用

    這篇文章主要介紹了C語言中宏的定義與使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-05-05
  • C語言實(shí)現(xiàn)掃雷小游戲簡單版

    C語言實(shí)現(xiàn)掃雷小游戲簡單版

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷小游戲簡單版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言+EasyX實(shí)現(xiàn)數(shù)字雨效果

    C語言+EasyX實(shí)現(xiàn)數(shù)字雨效果

    這篇文章主要為大家詳細(xì)介紹了C語言+EasyX實(shí)現(xiàn)數(shù)字雨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 深入詳解C編寫Windows服務(wù)程序的五個(gè)步驟

    深入詳解C編寫Windows服務(wù)程序的五個(gè)步驟

    本篇文章介紹了,使用C編寫Windows服務(wù)程序的五個(gè)步驟的詳細(xì)概述。需要的朋友參考下
    2013-05-05
  • Qt QChart 創(chuàng)建圖表的實(shí)現(xiàn)方法

    Qt QChart 創(chuàng)建圖表的實(shí)現(xiàn)方法

    這篇文章主要介紹了Qt QChart 創(chuàng)建圖表的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 最新評論

    江阴市| 班戈县| 剑阁县| 罗甸县| 浪卡子县| 津市市| 江孜县| 桓仁| 新干县| 岗巴县| 麻栗坡县| 伊金霍洛旗| 满洲里市| 同仁县| 刚察县| 苗栗市| 桃园市| 竹北市| 庄河市| 吐鲁番市| 喀喇| 苍梧县| 二连浩特市| 皋兰县| 安乡县| 德安县| 建宁县| 呼玛县| 阿荣旗| 循化| 雅安市| 孟津县| 张家港市| 迁西县| 红原县| 辉南县| 永昌县| 登封市| 庆城县| 钦州市| 游戏|