• 大小: 1.4MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-03
  • 语言: 其他
  • 标签:

资源简介

利用栈表达式的中缀变后缀,还有输入输出形式!

资源截图

代码片段和文件信息

#include//中缀转后缀有点问题!
#include
#include
//#include“SeqStack.h“
#include“assert.h“
using namespace std;

int isp(char ch)
{
if(ch==‘#‘) return 0;
else if(ch==‘(‘) return 1;
 else if(ch==‘*‘||ch==‘/‘||ch==‘%‘) return 5;
else if(ch==‘+‘||ch==‘-‘) return 3;
 else if(ch==‘)‘)  return 6;
  else cout<<“this is a error“<}
int icp(char ch)
{
if(ch==‘#‘) return 0;
else if(ch==‘(‘) return 6;
 else if(ch==‘*‘||ch==‘/‘||ch==‘%‘) return 4;
else if(ch==‘+‘||ch==‘-‘) return 2;
 else if(ch==‘)‘)  return 1;
  else cout<<“this is a error“<}
template
class linkNode
{
public:
linkNode(){link=NULL;}
linkNode(linkNode*p){link=p;}
linkNode(T x1linkNode*p1):data(x1)link(p1){}
~linkNode(){}
linkNode*link;
int data;


};
template
class linkedStack:public linkNode
{
public:
linkedStack():top(NULL)Length(0){}
~linkedStack(){makeEmpty();}
void Push( T& x);//const
bool Pop(T& x);//
bool getTop(T& x)const;
bool IsEmpty()const{return(top==NULL)?true:false;}
int getSize()const;
void makeEmpty();
void shuchu();
void push(const T& x);
friend ostream&operator<<(ostream& oslinkedStack& s);

//输出栈中元素的重载操作<<
private:
linkNode*top;//栈顶指针,即连头指针
int Length;

};
template
void linkedStack::makeEmpty()
{//逐次删去链式栈中的元素直至栈顶指针为空
linkNode *p;
while(top!=NULL)
{p=top;top=top->link;delete p;}

}
template
void linkedStack::Push( T& x)//const
{//将元素值x插入到链式栈的栈顶,即栈头
top=new linkNode(xtop);
assert(top!=NULL);
}
template
bool linkedStack::Pop(T& x)
{//删除栈顶结点,返回被删栈顶元素的值
if(IsEmpty()==true)return false;
linkNode* p=top;
top=top->link;
x=p->data;
delete p;
return true;
}
template
bool linkedStack::getTop(T& x)const
{//返回栈顶元素的值
if(IsEmpty==NULL)return false;
x=top->data;
return true;

}
template 
int linkedStack::getSize()const
{
linkNode*p=top;int k=0;
while(top!=NULL){top=top->link;k++;}
return k;
}
template
ostream& operator<<(ostream& oslinkedStack&s)
{//输出栈中元素的重载操作
os<<“栈中元素个数“< linkNode*p=S.top;int i=0;
while(p!=NULL)
{os<<++i<<“:“<data<link;}
return os;
}

class Calculator
{
public:
char x[5];
Calculator(double sz){}
Calculator(){}
void Run();
void Clear();
char* postfix();//expression e
private:
linkedStacks;
void AddOperand(double value);
bool Get2Operand(double& leftdouble& right);
void DoOperator(char op);
//void output();
//void PrintMatchedPairs(char*expression);
// void postfix();


};
void Calculator::DoOperator(char op)
{
double leftrightvalue;bool result;
result=Get2Operand(leftright);
if(result==true)
{
switch(op)
{
case‘+‘:value=left+right;s.Push(value);break;
case‘-‘:value=left-right;s.Push(valu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5491  2013-06-07 14:13  利用栈中缀变后缀求值\4343.cpp

     文件       4260  2013-05-10 15:54  利用栈中缀变后缀求值\4434.dsp

     文件        516  2013-05-10 14:07  利用栈中缀变后缀求值\4434.dsw

     文件      50176  2013-06-07 14:13  利用栈中缀变后缀求值\4434.ncb

     文件      53760  2013-06-07 14:13  利用栈中缀变后缀求值\4434.opt

     文件        893  2013-06-07 14:13  利用栈中缀变后缀求值\4434.plg

     文件     285344  2013-06-07 14:13  利用栈中缀变后缀求值\Debug\4343.obj

     文件    2009740  2013-06-07 13:55  利用栈中缀变后缀求值\Debug\4343.pch

     文件    1123328  2013-06-07 13:56  利用栈中缀变后缀求值\Debug\4343.pdb

     文件     561225  2013-06-07 14:09  利用栈中缀变后缀求值\Debug\4434.exe

     文件     805120  2013-06-07 14:09  利用栈中缀变后缀求值\Debug\4434.ilk

     文件    2011268  2013-06-07 14:01  利用栈中缀变后缀求值\Debug\4434.pch

     文件    1123328  2013-06-07 14:09  利用栈中缀变后缀求值\Debug\4434.pdb

     文件      99328  2013-06-07 14:13  利用栈中缀变后缀求值\Debug\vc60.idb

     文件     118784  2013-06-07 14:13  利用栈中缀变后缀求值\Debug\vc60.pdb

     目录          0  2013-06-24 16:15  利用栈中缀变后缀求值\Debug

     目录          0  2013-06-24 16:15  利用栈中缀变后缀求值

----------- ---------  ---------- -----  ----

              8252561                    17


评论

共有 条评论

相关资源