WEB开发网
开发学院软件开发VC 后缀表达式求值及校验 阅读

后缀表达式求值及校验

 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;
  }
}

主程序,这里完成了计算,以及对表达式检验的全部过程:

Tags:后缀 表达式 校验

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接