1. 10进制转8进制
void conversion(int n){
LinkStack S;
InitStack(S);
while(n){
Push(S,n%8);
n=n/8;
}
while(!StackEmpty(S)){
int x;
Pop(S,x);
printf("%d",x);
}
}
2. 括号匹配
bool Matching(){
LinkStack S;
char ch,x;
InitStack(S);
while(cin>>ch){
if(ch=='#')
break;
switch(ch){
case '[':
case '{':
case '(':
Push(S,ch);
break;
case ')': //1.队列为空 2.不匹配 3. 匹配
if(!StackEmpty(S)&&getTop(S)=='(')
Pop(S,x);
else
return false;
break;
case ']':
if(!StackEmpty(S)&&getTop(S)=='[')
Pop(S,x);
else
return false;
break;
case '}':
if(!StackEmpty(S)&&getTop(S)=='{')
Pop(S,x);
else
return false;
break;
}
}
return StackEmpty(S);
}
3. 表达式求值
表达式求值之前需要在前后均加入#。
表达式求值其实可以看做是两步:中缀表达式转换为后缀表达式(OPTR栈)+后缀表达式求值(OPND栈)
具体实现操作如下:
具体实现代码后有时间再写。