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

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

編譯原理實驗:后綴式求值(c++)

/* 將中綴表達式(a+b)轉換為后綴表達式(ab+)的算法思想:  
   ·
當讀到數字直接送至輸出隊列中  
   ·
當讀到運算符t時,  
      a.
將棧中所有優先級高于或等于t的運算符彈出,送到輸出隊列中;    
      b.t
進棧  
   ·
讀到左括號時總是將它壓入棧中  
   ·
讀到右括號時,將靠近棧頂的第一個左括號上面的運算符全部依次彈出,送至輸出隊列后,再丟棄左括號。  
  
     
運用后綴表達式進行計算的具體做法:  
   ·
建立一個棧S  
   ·
從左到右讀后綴表達式,讀到數字就將它轉換為數值壓入棧S中,讀到運算符則從棧中依次彈出兩個數分別到YX,然后以“X   運算符   Y”的形式計算機出結果,再壓加棧S  
   ·
如果后綴表達式未讀完,就重復上面過程,最后輸出棧頂的數值則為結束 */

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

char ex[100];//存儲后綴表達式
char str[100];//
存儲算術表達式
char stack[100];//
作為棧使用
char ch;//
當前判斷的字符
int i=0;//i
為算術表達式str的下標
int t;//t
為后綴式ex的下標
int top=0;//top
為棧頂
void trans();//
轉換函數
void compute();//
計算后綴式的值

void trans()//將中綴式轉換為后綴式
{
cout<<"
輸入一個算術表達式,以#號結束:"<<endl;
while(str[i]!='#')//
中綴式以#號結束
{
   i++;//
因為i的初值設為0
   cin>>str[i];
}

//
開始掃描
t=1;
i=1;
ch=str[i];
i++;//i
指向當前掃描字符的下一位
while(ch!='#')//
逐個掃描,直至遇到#號結束
{
   switch(ch)
   {
   case'('://
遇到(,進棧
    top++;
    stack[top]=ch;
    break;
   case')'://
遇到),將靠近棧頂的第一個左括號上面的運算符全部依次彈出,送至后綴式隊列后,再丟棄左括號。
    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++;//
因為top的初值為0
    stack[top]=ch;
    break;
   case'*':
   case'/':
    while(stack[top]=='*'|| stack[top]=='/')
   {
    ex[t]=stack[top];
    top--;
    t++;
   }
   top++;
   stack[top]=ch;
   break;
 
   /*
注意!除操作數外,其它符號都要用到棧*/
   default:while(ch>='0' && ch<='9')//
遇到操作數直接送至后綴式隊列
     {
      ex[t]=ch;
      t++;
      ch=str[i];
      i++;//
此時i指向操作數之后的運算符的后一位??!
     }
    i--;//
要在操作數之后,運算符之前添加空格符
    ex[t]=' ';//
用空格符隔開
    t++;

   }//switch結束

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


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

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;//
用于存放當前的計算結果
char ch;
int t=1;
int top =0;
ch=ex[t];
t++;

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

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

結果如圖所示:

clip_image001

 

posted on 2010-03-05 16:15 肥仔 閱讀(1359) 評論(0)  編輯 收藏 引用 所屬分類: 狀態機 & 自動機 & 形式語言

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品国产综合| 久久久久九九九九| 国产精品人人做人人爽| 欧美日韩一区二区欧美激情| 欧美激情1区2区3区| 欧美激情视频一区二区三区免费| 欧美粗暴jizz性欧美20| 欧美区日韩区| 国产精品欧美风情| 韩国女主播一区| 91久久综合亚洲鲁鲁五月天| 日韩视频精品| 午夜在线视频一区二区区别| 久久一二三四| 亚洲精品久久久久| 欧美激情亚洲| 亚洲少妇在线| 久久国产精品72免费观看| 美国十次成人| 国产精品久久7| 一区在线电影| 亚洲一区二区三区免费在线观看| 欧美制服第一页| 亚洲欧洲日产国产综合网| 亚洲男人的天堂在线| 久久男人av资源网站| 欧美午夜一区| 亚洲激情视频网站| 欧美一区二区三区电影在线观看| 麻豆精品在线视频| 亚洲婷婷在线| 欧美精品日韩一区| 激情久久一区| 欧美一区影院| 日韩一级黄色av| 久久午夜精品一区二区| 国产精品久久91| 一本大道久久精品懂色aⅴ| 久久久综合免费视频| 影音先锋亚洲视频| 欧美私人网站| 亚洲黄色av| 久久久久久有精品国产| 一本色道久久88精品综合| 久久综合狠狠综合久久综合88| 欧美性大战久久久久久久| 亚洲肉体裸体xxxx137| 久久视频这里只有精品| 亚洲欧美另类在线观看| 欧美性jizz18性欧美| 一本久久综合亚洲鲁鲁| 亚洲国产欧美久久| 蘑菇福利视频一区播放| 在线免费观看成人网| 久久久精品一区| 欧美一级专区| 韩国美女久久| 欧美~级网站不卡| 久久亚洲不卡| 在线成人国产| 久久一日本道色综合久久| 亚洲男人影院| 国产日韩精品一区二区三区| 香蕉亚洲视频| 亚洲欧美在线播放| 国产一区二区久久| 久久裸体视频| 久久亚洲精品视频| 91久久精品美女高潮| 欧美二区在线看| 欧美激情第10页| 99国产成+人+综合+亚洲欧美| 亚洲国产精品尤物yw在线观看| 免费成人网www| 亚洲精品日韩在线观看| 亚洲精品中文字幕女同| 欧美三区在线视频| 久久成人一区| 玖玖玖国产精品| 99伊人成综合| 性久久久久久久久久久久| 在线播放视频一区| 亚洲免费高清| 国产日本欧美一区二区三区在线| 久久久青草婷婷精品综合日韩| 久久九九99| 日韩一级在线| 午夜视频在线观看一区二区三区| 极品尤物一区二区三区| 亚洲国产老妈| 国产精品香蕉在线观看| 免费久久精品视频| 欧美午夜精品久久久| 久久久久久香蕉网| 欧美区一区二区三区| 久久福利视频导航| 欧美高清视频一区| 久久精品欧洲| 欧美日韩一区在线观看| 玖玖综合伊人| 欧美大片在线看| 久久国产精品色婷婷| 激情五月婷婷综合| 亚洲精品免费一区二区三区| 国产精品久久久久一区二区三区共| 久久精品一区二区国产| 欧美激情一区二区久久久| 久久精品国产99国产精品| 欧美国产成人精品| 久久久999国产| 国产精品久99| 亚洲精品乱码久久久久久日本蜜臀 | 欧美资源在线| 欧美伦理91i| 久久久夜夜夜| 国产欧美日韩免费看aⅴ视频| 亚洲国产精品久久久久| 国内揄拍国内精品少妇国语| 中文亚洲字幕| 一本色道久久综合亚洲精品高清| 久久国产手机看片| 欧美伊人久久| 国产精品一区二区在线| 亚洲精品视频一区| 亚洲美女黄网| 欧美成人亚洲成人日韩成人| 久久久之久亚州精品露出| 国产精品有限公司| 中文国产亚洲喷潮| 亚洲香蕉网站| 国产精品v片在线观看不卡| 亚洲精品字幕| 一区二区久久久久久| 免费观看成人www动漫视频| 久久婷婷综合激情| 国产一区二区三区在线观看视频| 亚洲性图久久| 欧美在线国产精品| 国产喷白浆一区二区三区| 亚洲综合欧美日韩| 欧美在线视频免费播放| 国产精品午夜春色av| 午夜久久电影网| 久久欧美肥婆一二区| 伊人久久大香线| 男人的天堂亚洲在线| 亚洲国产色一区| 宅男噜噜噜66一区二区| 国产精品国色综合久久| 香蕉乱码成人久久天堂爱免费 | 午夜久久美女| 国产午夜精品理论片a级探花 | 一个色综合av| 国产精品久久9| 久久国产成人| 亚洲激情电影在线| 亚洲小视频在线| 国产综合自拍| 欧美高清视频免费观看| av成人老司机| 欧美黄免费看| 黑丝一区二区| 午夜精品久久久久久久久| 欧美一级专区| 亚洲高清在线播放| 欧美伦理a级免费电影| 亚洲欧美日韩精品久久亚洲区| 久久久999精品免费| 亚洲欧洲一区二区在线观看| 欧美日韩在线一二三| 久久成人av少妇免费| 亚洲电影在线看| 亚洲一区在线播放| 影院欧美亚洲| 国产精品久久久久久久久果冻传媒| 欧美一区二区三区四区高清| 亚洲二区在线视频| 欧美在线视频导航| 一区二区三区偷拍| 一区二区在线免费观看| 欧美视频在线观看视频极品| 久久久久久成人| 亚洲少妇诱惑| 亚洲理论在线| 牛人盗摄一区二区三区视频| 亚洲午夜视频在线| 亚洲精品欧美激情| 国内一区二区三区在线视频| 国产精品久久二区| 欧美高清在线精品一区| 久久精品国产一区二区电影| 中文亚洲欧美| 一本久道久久久| 亚洲精品韩国| 亚洲欧洲一二三| 亚洲国产成人av| 欧美成人tv| 免费在线亚洲欧美| 久久全国免费视频| 久久久久久9|