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栈)
具体实现操作如下:
具体实现代码后有时间再写。