国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

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

2020-05-23 14:04:24
字體:
供稿:網(wǎng)友
這篇文章主要為大家詳細(xì)介紹了C++利用鏈棧實現(xiàn)表達(dá)式求值的相關(guān)資料,感興趣的小伙伴們可以參考一下
 

本文實例為大家分享了C++利用鏈棧實現(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之間的個位數(shù)并以#號結(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;}

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



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 寿阳县| 宝山区| 昔阳县| 芮城县| 龙海市| 双峰县| 高平市| 大丰市| 永州市| 徐水县| 临安市| 桦南县| 金山区| 商洛市| 汕头市| 永顺县| 德保县| 威远县| 邵阳市| 岱山县| 永寿县| 平远县| 南漳县| 乌海市| 菏泽市| 册亨县| 东乡族自治县| 祥云县| 柏乡县| 乐平市| 海兴县| 江山市| 马鞍山市| 杭锦旗| 哈密市| 荆州市| 佛山市| 揭阳市| 高青县| 慈利县| 宜君县|