资源简介
利用栈表达式的中缀变后缀,还有输入输出形式!
代码片段和文件信息
#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
- 上一篇:基于物联网技术的智能家电控制终端设计毕业设计
- 下一篇:tl-703n固件
评论
共有 条评论