青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

編譯原理實(shí)驗(yàn):后綴式求值(c++)

/* 將中綴表達(dá)式(a+b)轉(zhuǎn)換為后綴表達(dá)式(ab+)的算法思想:  
   ·
當(dāng)讀到數(shù)字直接送至輸出隊(duì)列中  
   ·
當(dāng)讀到運(yùn)算符t時(shí),  
      a.
將棧中所有優(yōu)先級(jí)高于或等于t的運(yùn)算符彈出,送到輸出隊(duì)列中;    
      b.t
進(jìn)棧  
   ·
讀到左括號(hào)時(shí)總是將它壓入棧中  
   ·
讀到右括號(hào)時(shí),將靠近棧頂?shù)牡谝粋€(gè)左括號(hào)上面的運(yùn)算符全部依次彈出,送至輸出隊(duì)列后,再丟棄左括號(hào)。  
  
     
運(yùn)用后綴表達(dá)式進(jìn)行計(jì)算的具體做法:  
   ·
建立一個(gè)棧S  
   ·
從左到右讀后綴表達(dá)式,讀到數(shù)字就將它轉(zhuǎn)換為數(shù)值壓入棧S中,讀到運(yùn)算符則從棧中依次彈出兩個(gè)數(shù)分別到YX,然后以“X   運(yùn)算符   Y”的形式計(jì)算機(jī)出結(jié)果,再壓加棧S  
   ·
如果后綴表達(dá)式未讀完,就重復(fù)上面過程,最后輸出棧頂?shù)臄?shù)值則為結(jié)束 */

#include <iostream>
#include <string>
using namespace std;

char ex[100];//存儲(chǔ)后綴表達(dá)式
char str[100];//
存儲(chǔ)算術(shù)表達(dá)式
char stack[100];//
作為棧使用
char ch;//
當(dāng)前判斷的字符
int i=0;//i
為算術(shù)表達(dá)式str的下標(biāo)
int t;//t
為后綴式ex的下標(biāo)
int top=0;//top
為棧頂
void trans();//
轉(zhuǎn)換函數(shù)
void compute();//
計(jì)算后綴式的值

void trans()//將中綴式轉(zhuǎn)換為后綴式
{
cout<<"
輸入一個(gè)算術(shù)表達(dá)式,以#號(hào)結(jié)束:"<<endl;
while(str[i]!='#')//
中綴式以#號(hào)結(jié)束
{
   i++;//
因?yàn)?span lang="EN-US">i的初值設(shè)為0
   cin>>str[i];
}

//
開始掃描
t=1;
i=1;
ch=str[i];
i++;//i
指向當(dāng)前掃描字符的下一位
while(ch!='#')//
逐個(gè)掃描,直至遇到#號(hào)結(jié)束
{
   switch(ch)
   {
   case'('://
遇到(,進(jìn)棧
    top++;
    stack[top]=ch;
    break;
   case')'://
遇到),將靠近棧頂?shù)牡谝粋€(gè)左括號(hào)上面的運(yùn)算符全部依次彈出,送至后綴式隊(duì)列后,再丟棄左括號(hào)。
    while(stack[top]!='(')
    {
     ex[t]=stack[top];
     top--;
     t++;
    }
    top--;//
丟棄(
    break;
   case'+':
   case'-':
    while(top!=0 && stack[top]!='(')
    {
     ex[t]=stack[top];
     top--;
     t++;
    }
    top++;//
因?yàn)?span lang="EN-US">top的初值為0
    stack[top]=ch;
    break;
   case'*':
   case'/':
    while(stack[top]=='*'|| stack[top]=='/')
   {
    ex[t]=stack[top];
    top--;
    t++;
   }
   top++;
   stack[top]=ch;
   break;
 
   /*
注意!除操作數(shù)外,其它符號(hào)都要用到棧*/
   default:while(ch>='0' && ch<='9')//
遇到操作數(shù)直接送至后綴式隊(duì)列
     {
      ex[t]=ch;
      t++;
      ch=str[i];
      i++;//
此時(shí)i指向操作數(shù)之后的運(yùn)算符的后一位!!
     }
    i--;//
要在操作數(shù)之后,運(yùn)算符之前添加空格符
    ex[t]=' ';//
用空格符隔開
    t++;

   }//switch結(jié)束

   ch=str[i];//仿照default中的,返回添加空格符之前的操作
   i++;
}//
結(jié)束while


while(top!=0)//
仍有運(yùn)算符在棧中
{
   ex[t]=stack[top];
   t++;
   top--;
}
ex[t]=' ';//
不能省,若省掉則無法進(jìn)入compute函數(shù)??

for(int j=1;j<i-1;j++)
   cout<<str[j];
cout<<"
的后綴式為:";
for(j=1;j<t;j++)
cout<<ex[j];

}

void compute()
{
float stack[100];//
作為棧使用
int d;//
用于存放當(dāng)前的計(jì)算結(jié)果
char ch;
int t=1;
int top =0;
ch=ex[t];
t++;

while(ch!=' ')//此空格符為后綴式中的最后一個(gè)字符,與上文中的" ex[t]=' '; "相對(duì)應(yīng)
{
   switch(ch)
   {
   case'+':
    stack[top-1]=stack[top-1]+stack[top];
    top--;
    break;
   case'-':
    stack[top-1]=stack[top-1]-stack[top];
    top--;
    break;
   case'*':
    stack[top-1]=stack[top-1]*stack[top];
    top--;
    break;
   case'/':
    if(stack[top]!=0)
     stack[top-1]=stack[top-1]/stack[top];
    else
    {
     cout<<"\n
除零錯(cuò)誤!"<<endl;
     exit(0);//
異常退出
    }
    top--;//
兩個(gè)操作數(shù)算出一個(gè)結(jié)果存放到棧頂,那兩操作數(shù)便可丟棄,故top-1
    break;
   default:
    d=0;
    while(ch>='0' && ch<='9')
    {
     d=10*d+ch-'0';//
將數(shù)字字符轉(zhuǎn)化為對(duì)應(yīng)的數(shù)值,*10是與大于10的數(shù)值時(shí)要進(jìn)位
     ch=ex[t];
     t++;
    }
    top++;
    stack[top]=d;//
棧頂存放當(dāng)前計(jì)算結(jié)果
 
   }//switch
結(jié)束
   ch=ex[t];//
跳過空格符,掃描下一個(gè)運(yùn)算符或操作數(shù)
   t++;
}
cout<<"\n
計(jì)算結(jié)果為:"<<stack[top]<<endl;
}

void main()
{
trans();
compute();
}

結(jié)果如圖所示:

clip_image001

 

posted on 2010-03-05 16:15 肥仔 閱讀(1359) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 狀態(tài)機(jī) & 自動(dòng)機(jī) & 形式語言

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中文精品99久久国产香蕉| 欧美伦理a级免费电影| 亚洲欧洲一区二区三区| 国产亚洲欧美激情| 国产原创一区二区| 激情小说另类小说亚洲欧美| 在线日韩中文| 91久久精品国产| 快播亚洲色图| 欧美一区二区三区在线| 午夜精品成人在线| 亚洲一区二区免费看| 亚洲伊人伊色伊影伊综合网| 亚洲图片欧美午夜| 亚洲小视频在线| 久久国产一区二区三区| 久久久久一区| 最新日韩av| 亚洲一区二区视频在线| 久久久精品一品道一区| 欧美成人首页| 国产精品一区二区在线观看网站 | 国产在线精品自拍| 在线日本欧美| 午夜国产精品影院在线观看 | 一区二区三区精品久久久| 欧美在线亚洲综合一区| 欧美国产视频一区二区| 亚洲一区二区三区免费观看| 久久久91精品国产一区二区精品| 欧美精品一区二区三区在线播放| 日韩一区二区久久| 欧美一级在线视频| 欧美日韩国产在线| 激情成人av| 欧美一级视频精品观看| 亚洲精品国精品久久99热| 欧美在线视频a| 欧美午夜精品久久久| 亚洲高清在线精品| 久久久久久久性| 亚洲一级电影| 欧美三级在线视频| 亚洲乱码国产乱码精品精98午夜| 欧美一区二区三区免费大片| 日韩亚洲精品在线| 欧美激情按摩| 亚洲日本成人网| 欧美电影在线免费观看网站| 最新亚洲电影| 日韩天堂av| 玖玖玖国产精品| 亚洲欧美日本国产专区一区| 欧美视频专区一二在线观看| 亚洲欧洲日本国产| 欧美成人国产va精品日本一级| 久久国产精品72免费观看| 欧美日韩爆操| 一本一本久久a久久精品综合妖精| 国产精一区二区三区| 99精品视频免费观看| 亚洲缚视频在线观看| 欧美成人午夜剧场免费观看| 亚洲激情国产精品| 亚洲国产精品成人va在线观看| 免费成人高清| 亚洲理论在线| 亚洲蜜桃精久久久久久久| 欧美成人69av| 在线一区欧美| 一区二区欧美视频| 国产欧美日韩亚洲一区二区三区| 久久国产色av| 久久视频国产精品免费视频在线| 国产一区二区三区奇米久涩 | 国产日韩av在线播放| 午夜激情久久久| 亚洲欧美日韩国产一区二区| 国产亚洲综合在线| 美女主播视频一区| 欧美国产日韩视频| 亚洲一级黄色| 欧美一级视频| 亚洲精品一二三| 夜夜嗨av一区二区三区中文字幕| 国产精品制服诱惑| 欧美国产综合视频| 欧美亚男人的天堂| 老牛国产精品一区的观看方式| 久久亚洲免费| 亚洲视频一区在线观看| 午夜视频精品| 亚洲美女福利视频网站| 亚洲一区二区在线看| 精品成人乱色一区二区| 亚洲精品一区在线| 国产一区日韩欧美| 日韩亚洲在线观看| 狠狠色综合色综合网络| 一本大道久久a久久精二百| 在线播放日韩| 91久久在线播放| 亚洲欧美日韩视频二区| 亚洲精品国产精品国产自| 亚洲欧美另类综合偷拍| 亚洲精品国精品久久99热| 亚洲永久免费av| 一本一本久久a久久精品综合麻豆| 久久国产乱子精品免费女| 亚洲国产精品第一区二区| 久久国产综合精品| 99精品久久久| 久久美女艺术照精彩视频福利播放| 这里只有精品视频| 免费视频久久| 久久av一区二区三区漫画| 欧美日韩另类字幕中文| 久久综合九色综合欧美狠狠| 欧美体内she精视频| 亚洲第一区在线观看| 怡红院精品视频在线观看极品| 亚洲一区综合| 一区二区精品| 欧美日韩高清不卡| 欧美福利电影网| 在线成人中文字幕| 久久精品国产清自在天天线| 欧美一区二区三区免费视| 欧美三级在线播放| 一本大道久久a久久综合婷婷| 日韩一级精品| 欧美日韩另类丝袜其他| 亚洲精品国精品久久99热| 亚洲人成在线观看一区二区| 免费成人高清视频| 国产日韩欧美中文| 亚洲一区999| 午夜精品久久久久久久99水蜜桃| 欧美日韩视频第一区| 亚洲高清毛片| 日韩一级黄色av| 欧美日韩一区二区视频在线| 99精品欧美| 香蕉久久夜色精品| 国产精品综合视频| 欧美一级大片在线观看| 久久久久久尹人网香蕉| 一区二区亚洲精品| 乱中年女人伦av一区二区| 欧美激情一区二区三区四区| 亚洲激情欧美激情| 国产精品成人av性教育| 亚洲欧美视频一区二区三区| 久久久久久网站| 亚洲精品免费一区二区三区| 欧美人交a欧美精品| 一级日韩一区在线观看| 欧美一区午夜视频在线观看| 国产一区二区在线免费观看| 久久久久网站| 亚洲欧洲一区二区在线观看| 一区二区三区久久久| 国产麻豆精品在线观看| 久久亚洲午夜电影| 亚洲理伦在线| 欧美一区二区三区免费大片| 悠悠资源网亚洲青| 欧美日韩天堂| 久久久噜噜噜久久人人看| 亚洲福利久久| 欧美一区1区三区3区公司| 亚洲福利视频网| 国产精品yjizz| 久久久女女女女999久久| 99re66热这里只有精品4| 久久精品一区二区| 一本色道久久综合亚洲精品不 | 亚洲视频网在线直播| 国一区二区在线观看| 免费观看亚洲视频大全| 在线视频日韩| 欧美成人午夜视频| 欧美在现视频| 亚洲一区二区少妇| 亚洲福利一区| 国产亚洲欧美激情| 欧美日韩精品一区| 久久手机精品视频| 亚洲在线电影| 亚洲国产小视频| 免费一级欧美在线大片| 亚洲欧美日韩精品久久久| 性做久久久久久| 夜夜嗨av一区二区三区中文字幕| 欧美高清视频在线| 久久漫画官网| 久久婷婷国产综合精品青草 | 欧美高清一区| 久久一区二区三区av| 久久成人一区|