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

C++利用鏈棧實(shí)現(xiàn)表達(dá)式求值

 更新時(shí)間:2016年05月16日 16:30:55   作者:fasterfish  
這篇文章主要為大家詳細(xì)介紹了C++利用鏈棧實(shí)現(xiàn)表達(dá)式求值的相關(guān)資料,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++利用鏈棧實(shí)現(xiàn)表達(dá)式求值的具體代碼,供大家參考,具體內(nèi)容如下

#include<iostream.h>
typedef int Status;
typedef char Cstack;
#define OK 1
#define ERROR 0
 
typedef struct StackNode
{
  Cstack data;
  struct StackNode *next;
}StackNode,*LinkStack;
 
Status InitStack(LinkStack &S)
{
  S=NULL;
  return OK;
}
Status Push(LinkStack &S,Cstack e)
{
  StackNode *p;
  p=new StackNode;
  p->data=e;
  p->next=S;
  S=p;
  return OK;
}
Status Pop(LinkStack &S,Cstack &e)
{
  StackNode *p;
  if(S==NULL) return ERROR;
  e=S->data;
  p=S;
  S=S->next;
  delete p;
  return OK;
}
Cstack GetTop(LinkStack S)
{
  if(S!=NULL)
  return S->data;
}
Status In(Cstack ch)
{
  cin>>ch;
  if(ch=='+')
    return OK;
  else if(ch=='-')
    return OK;
  else if(ch=='*')
    return OK;
  else if(ch=='/')
    return OK;
  else if(ch=='#')
    return OK;
  else
    return ERROR;
}
Cstack Precede(Cstack t1,Cstack t2)
{
  switch(t1)
  {
  case '+':
    switch(t2)
    {
    case '+':return '>';break;
    case '-':return '>';break;
    case '*':return '<';break;
    case '/':return '<';break;
    case '(':return '<';break;
    case ')':return '>';break;
    case '#':return '>';break;
    }
    break;
    case '-':
      switch(t2)
    {
    case '+':return '>';break;
    case '-':return '>';break;
    case '*':return '<';break;
    case '/':return '<';break;
    case '(':return '<';break;
    case ')':return '>';break;
    case '#':return '>';break;
    }
    break;
    case '*':
      switch(t2)
    {
    case '+':return '>';break;
    case '-':return '>';break;
    case '*':return '>';break;
    case '/':return '>';break;
    case '(':return '<';break;
    case ')':return '>';break;
    case '#':return '>';break;
    }
    break;
    case '/':
      switch(t2)
    {
    case '+':return '>';break;
    case '-':return '>';break;
    case '*':return '>';break;
    case '/':return '>';break;
    case '(':return '<';break;
    case ')':return '>';break;
    case '#':return '>';break;
    }
    break;
    case '(':
      switch(t2)
    {
    case '+':return '<';break;
    case '-':return '<';break;
    case '*':return '<';break;
    case '/':return '<';break;
    case '(':return '<';break;
    case ')':return '=';break;
    case '#':return '>';break;
    }
    break;
    case ')':
      switch(t2)
    {
    case '+':return '>';break;
    case '-':return '>';break;
    case '*':return '>';break;
    case '/':return '>';break;
    case '(':return '=';break;
    case ')':return '>';break;
    case '#':return '>';break;
    }
    break;
    case '#':
      return '=';
    break;
  }
}
Cstack Operator(Cstack t1,Cstack t2,Cstack t3)
{
  t1=t1-48;
  t3=t3=48;
  int c;
  switch(t2)
  {
  case '+':
    c=t1+t2+48;
    return c;
    break;
  case '-':
    c=t1-t2+48;
    return c;
    break;
  case '*':
    c=t1*t2+48;
    return c;
    break;
  case '/':
    c=t1/t2+48;
    return c;
    break;
  }
}  
void main()
{
  LinkStack OPTR,OPAN;
  Cstack cha1,cha2,x,cha,thea;
  InitStack(OPTR);
  InitStack(OPAN);
  Push(OPTR,'#');
  cout<<"輸入表達(dá)式的中間值及最終結(jié)果局限于0~9之間的個(gè)位數(shù)并以#號(hào)結(jié)束"<<endl;
  while(cha!='#'||GetTop(OPTR)!='#')
  {
    cin>>cha;
    if(!In(cha))
      Push(OPAN,cha);
    else
      switch(Precede(GetTop(OPTR),cha))
      {
      case '<':
        Push(OPTR,cha);
        cin>>cha;
          break;
      case '>':
        Pop(OPTR,thea);
        Pop(OPAN,cha1);
        Pop(OPAN,cha2);
        Push(OPAN,(cha1,thea,cha2));
          break;
      case '=':
        Pop(OPTR,x);
        break;
      }
  }
  cout<<GetTop(OPAN)<<endl;
  return;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)C++程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:

相關(guān)文章

  • C++音樂(lè)播放按鈕的封裝過(guò)程詳解

    C++音樂(lè)播放按鈕的封裝過(guò)程詳解

    此篇文章用于記錄學(xué)習(xí)C++封裝音樂(lè)播放按鈕,封裝將對(duì)象的屬性和行為作為一個(gè)整體,表現(xiàn)生活中的事物、將屬性和行為加以權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C語(yǔ)言中棧的兩種實(shí)現(xiàn)方法

    C語(yǔ)言中棧的兩種實(shí)現(xiàn)方法

    棧的實(shí)現(xiàn)方式有兩種,一種方法是使用指針,而另一種方法則是使用數(shù)組,這篇文章主要介紹了C語(yǔ)言中棧的兩種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2021-08-08
  • C++中防止頭文件重復(fù)包含的幾種方法

    C++中防止頭文件重復(fù)包含的幾種方法

    在 C/C++ 編程中,當(dāng)一個(gè)項(xiàng)目比較大時(shí),往往都是分文件,這時(shí)候有可能不小心把同一個(gè)頭文件 include 多次,或者頭文件嵌套包含,這些會(huì)導(dǎo)致一系列的問(wèn)題,如符號(hào)重定義、編譯錯(cuò)誤等,因此,防止頭文件的重復(fù)包含是至關(guān)重要的,本文給大家介紹了C++中防止頭文件重復(fù)包含的兩種方法
    2024-05-05
  • VS2010 boost標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)環(huán)境安裝教程

    VS2010 boost標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)環(huán)境安裝教程

    這篇文章主要為大家詳細(xì)介紹了VS2010 boost標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)環(huán)境的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C++11利用原子操作實(shí)現(xiàn)自旋鎖

    C++11利用原子操作實(shí)現(xiàn)自旋鎖

    C++自旋鎖是一種低層次的同步原語(yǔ),用于保護(hù)共享資源的訪問(wèn),這篇文章主要為大家介紹了如何利用原子操作實(shí)現(xiàn)自旋鎖,感興趣的小伙伴可以了解下
    2023-09-09
  • C++類(lèi)與對(duì)象深入之運(yùn)算符重載與const及初始化列表詳解

    C++類(lèi)與對(duì)象深入之運(yùn)算符重載與const及初始化列表詳解

    運(yùn)算符是程序中最最常見(jiàn)的操作,例如對(duì)于內(nèi)置類(lèi)型的賦值我們直接使用=賦值即可,因?yàn)檫@些編譯器已經(jīng)幫我們做好了,但是對(duì)象的賦值呢?能直接賦值嗎
    2022-06-06
  • 初學(xué)C語(yǔ)言基本運(yùn)算和表達(dá)式

    初學(xué)C語(yǔ)言基本運(yùn)算和表達(dá)式

    在本文里小編給大家分享的是關(guān)于C語(yǔ)言基本運(yùn)算和表達(dá)式的相關(guān)知識(shí)點(diǎn),需要的朋友們跟著學(xué)習(xí)下。
    2019-08-08
  • 構(gòu)造函數(shù)不能聲明為虛函數(shù)的原因及分析

    構(gòu)造函數(shù)不能聲明為虛函數(shù)的原因及分析

    構(gòu)造函數(shù)不需要是虛函數(shù),也不允許是虛函數(shù),因?yàn)閯?chuàng)建一個(gè)對(duì)象時(shí)我們總是要明確指定對(duì)象的類(lèi)型,盡管我們可能通過(guò)實(shí)驗(yàn)室的基類(lèi)的指針或引用去訪問(wèn)它但析構(gòu)卻不一定,我們往往通過(guò)基類(lèi)的指針來(lái)銷(xiāo)毀對(duì)象
    2013-10-10
  • C++實(shí)現(xiàn)俄羅斯方塊游戲

    C++實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 用C語(yǔ)言實(shí)現(xiàn)五子棋小游戲

    用C語(yǔ)言實(shí)現(xiàn)五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論

金川县| 宁海县| 龙井市| 林州市| 台前县| 会昌县| 兴化市| 鄂托克旗| 宣威市| 金门县| 北辰区| 内江市| 景宁| 安化县| 二连浩特市| 太仓市| 西丰县| 柳州市| 沅陵县| 禹城市| 军事| 桐柏县| 理塘县| 科技| 定安县| 个旧市| 高清| 朝阳县| 屏南县| 玉山县| 北海市| 陵水| 周至县| 东阳市| 开原市| 文山县| 蒙阴县| 庄河市| 集安市| 荥经县| 文昌市|