数制转换
十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单的算法基于下列原理:
编写程序:对于输入任意的一个非负十进制整数,打印输出与其等值的八进制数,由于上述计算过程是从低位到高位顺序产生八进制数的各个数位,而打印输出一般来说是从高位到低位进行,恰好和计算过程相反。因此,若将计算过程中得到的八进制数的各位顺序进栈,则按出栈序列打印输出的即为与输入对应的八进制数。
代码实现:
void conversion(){
InitStack(s);
scanf("%d",N);
while(N){
Push(s,N%8);
N=N/8;
}
while(!StackEmpty(s)){
Pop(s,e);
printf("%d",e);
}
}
括号匹配的检验
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即(【】())或者【(【】【】)】等为正确的格式,【(】)或(【())均为不正确的格式。
例如考虑下列括号序列:
算法思想:在算法中设置一个栈,每读入一个括号,若是左括号,则作为一个新的更急迫的期待压入栈中,自然使得原有的栈中的所有未消解的期待的急迫性都降了一级;若是右括号,则或者使置于栈顶的括号出栈,最急迫的期待得以消解,或者是不合法的情况。