新手请教一个数据结构问题
向大家请教个数据结构问题:#include <iostream.h>
typedef int elemtype;
struct sqstack{
elemtype data[20];
int top;
}; //定义栈类型
void main()
{
char bds_hz[]="423*+42/-#"; //后缀表达式
int i=0;
int x1,x2,temp;
sqstack bds; //定义一个栈
bds.top=-1; //初始化栈顶指针
while (bds_hz[i]!='#') //依次取得后缀表达式中的字符判断并操作
{
if (('0'<=bds_hz[i])&&(bds_hz[i]<='9') )
bds.data[++bds.top]=bds_hz[i]-'0'; //如果是操作数,压栈
else
{//如果是操作符
x2=bds.data[bds.top--]; //操作数2,出栈
x1=bds.data[bds.top--]; //操作数1,出栈
//计算
switch (bds_hz[i])
{
case '+': temp=x1+x2;break;
case '-': temp=x1-x2;break;
case '*': temp=x1*x2;break;
case '/': temp=x1/x2;break;
}
bds.data[++bds.top]=temp; //计算结果压栈
}
i++; //指针后移
}
cout<<bds.data[0]<<endl; //输出表达式结果
}
/*需要解决的问题:
任务一:
1,请编写压栈和出栈函数,函数头分别为
int push(bds_stack &s,int e)
int pop(bds_stack &s,int &e)
2,用编写好的函数替代程序中的对应代码
下面系我自己写的,不过不行:
#include <iostream.h>
typedef int elemtype;
struct sqstack{
elemtype data[20];
int top;
};
int push(bds_stack &s,int e)
{
int *p=s;
while(e!='#')
{
if(('0'<=e)&&(e<='9'))
p->data[++p->top]=e-'0'
return 0;
}
}
int pop(bds_stack &s,int &e)
{
int *p=s;
int x1,x2;
while(e!='#')
{
if(('0'>e)&&(e>'9'))
x2=p->data[p->top--];
x1=p->data[p->top--];
return 0;
}
void main()
{
char bds_hz[]="423*+42/-#"; //后缀表达式
sqstack bds; //定义一个栈
bds.top=-1; //初始化栈顶指针
int temp;
int i,j;
for(i=0;i<20;i++)
{
j=bds_hz[i];
int push(&bds,j)
int pop(&bds,&j)
}
switch (bds_hz[i])
{
case '+': temp=x1+x2;break;
case '-': temp=x1-x2;break;
case '*': temp=x1*x2;break;
case '/': temp=x1/x2;break;
}
bds.data[++bds.top]=temp; //计算结果压栈
i++; //指针后移
cout<<bds.data[0]<<endl; //输出表式结果
}