10、st(string postfixexp)
{
postfixexp.append(2,' ');
Stack* NumberStack=new Stack;
int i=0;
int number;
int first;
int last;
for(;postfixexp[i]!=32;)
{
int ch;
ch=FindNumber(postfixexp[i]);
switch(ch)
{
case 0:
number=ShuRu(postfixexp,i);
N
11、umberStack->Puah_Head(number);
break;
case 2:
first=NumberStack->Top();
NumberStack->Pop_Head();
last=NumberStack->Top();
NumberStack->Pop_Head();
number=first+last;
NumberStack->Puah_Head(number);
i++;
break;
case 3:
first=NumberStack->Top();
NumberStack->Pop_He
12、ad();
last=NumberStack->Top();
NumberStack->Pop_Head();
number=last-first;
NumberStack->Puah_Head(number);
i++;
break;
case 4:
first=NumberStack->Top();
NumberStack->Pop_Head();
last=NumberStack->Top();
NumberStack->Pop_Head();
number=first*last;
NumberStack->Pu
13、ah_Head(number);
i++;
break;
case 5:
first=NumberStack->Top();
NumberStack->Pop_Head();
last=NumberStack->Top();
NumberStack->Pop_Head();
number=last/first;
NumberStack->Puah_Head(number);
i++;
break;
}
i++;
}
number=NumberStack->Top();
return number;
14、
}
int ShuRu(string a,int&i)
{
int b[10];
int num=0;
int k=0;
int jie=1;
for(;a[i]!=32;i++,k++)
{
b[k]=a[i]-48;
jie=jie*10;
}
b[k]=10;
for(int j=0;b[j]<10;j++)
{
num=num+b[j]*jie/10;
jie=jie/10;
}
return num;
}
int FindNumber(char a)
{
if(a=
15、'(') return 1;
if(a=='+') return 2;
if(a=='-') return 3;
if(a=='*') return 4;
if(a=='/') return 5;
if(a==')') return 6;
return 0;
}
char* Change(int number,int a)
{
Stack* m=new Stack;
int zheng=1;
n=new char[100];
char jinzhi[]="0123456789ABCDEF";
//cout<16、Puah_Head(jinzhi[number%a]);
}
for(zheng=0;m->Head->Next!=NULL;zheng++)
{
n[zheng]=(*m).Top();
m->Pop_Head();
}
n[zheng]='\0';
return n;
}
string PostFix(string exp)
{
bool flag=true;
int TokenNumber,TopTok
17、enNumber;
Stack* OpStack=new Stack;
string PostFixExp;
string Op="0(+-*/)";
string Blank=" ";
int j=exp.length();
if(FindNumber(exp[0])>1) flag=false;
for(int i=0;iPuah
18、Head(exp[i]);break;
case 6: for(;;)
{
if(OpStack->IsEmpty())
{
flag=false;
break;
}
TopTokenNumber=FindNumber(OpStack->Top());
OpStack->Pop_Head();
if(TopTokenNumber==1) break;
PostFixExp.append(Blank+Op[TopTokenNumber]);
}brea
19、k;
case 2:
case 3:
case 4:
case 5:for(;;)
{
if(i1)
{
flag=false;
break;
}
if(OpStack->IsEmpty()||((TokenNumber/2)>(FindNumber(OpStack->Top())/2)))
{
OpStack->Puah_Head(Op[TokenNumber]
20、);
break;
}
else
{
TopTokenNumber=FindNumber(OpStack->Top());
OpStack->Pop_Head();
PostFixExp.append(Blank+Op[TopTokenNumber]);
}
}
break;
case 0:PostFixExp.append(Blank+exp[i]);
for(;i<(j-1);)
{
21、if(FindNumber(exp[i+1])==1)
{
flag=false;
break;
}
if(FindNumber(exp[i+1])!=0) break;
i++;
PostFixExp.append(1,exp[i]);
}
break;
default:
flag=false;
}
}
for(;!OpStack->IsEmpty();)
{
TopTokenNumber=FindNumber(OpStack->Top());
OpStack->Pop_Head();
if(TopTokenNumber==1)
{
flag=false;
break;
}
else
PostFixExp.append(Blank+Op[TopTokenNumber]);
}
if(!flag)
PostFixExp="输入错误";
return PostFixExp;
}