后缀表达式求值及校验
2007-03-15 21:54:48 来源:WEB开发网核心提示: 类CStack的定义:class CStack{private:int num[100];//栈内元素的存放int sum;//栈里数据的个数int flag;//非法操作判断位int popcount;//记录POP次数int pushcount;//记录PUSH次数public:CSt
类CStack的定义:
class CStack
{
private:
int num[100];//栈内元素的存放
int sum;//栈里数据的个数
int flag;//非法操作判断位
int popcount;//记录POP次数
int pushcount;//记录PUSH次数
public:
CStack();
int getflag();//提取非法操作判断位编码 /> int getsum();/> void setflag(int);
int getcount();//通过popcount,pushcount计算返回表达式中的数字的个数
void Pop();//出栈操作
void Push(int temp);//入栈操作
int Top();//返回栈顶元素
virtual ~CStack();
};
类CStack的实现:CStack::CStack()
{
for(int i=0;i<=50;i++)
num[i]=0;
sum=0;
flag=1;//假设所有操作均合法
popcount=0;
pushcount=0;
}
int CStack::getflag()
{
return flag;
}
int CStack::getsum()
{
return sum;
}
void CStack::setflag(int tempflag)
{
flag=tempflag;
}
int CStack::getcount()
{
return (pushcount*2-popcount)/2;
}
void CStack::Pop()
{
if(sum>=1)//判断是否非法操作
{
num[sum]=0;
sum--;
popcount++;
}
else
{
flag=0;
}
}
void CStack::Push(int temp)
{
sum++;
num[sum]=temp;
pushcount++;
}
int CStack::Top()
{
if(sum>=1)//判断是否非法操作
{
return num[sum];
}
else
{
flag=0;
}
}
主程序,这里完成了计算,以及对表达式检验的全部过程:
更多精彩
赞助商链接