栈的应用

2015/05/13 数据结构
数制转换

十进制数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);
	}
}
括号匹配的检验

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即(【】())或者【(【】【】)】等为正确的格式,【(】)或(【())均为不正确的格式。

例如考虑下列括号序列:

算法思想:在算法中设置一个栈,每读入一个括号,若是左括号,则作为一个新的更急迫的期待压入栈中,自然使得原有的栈中的所有未消解的期待的急迫性都降了一级;若是右括号,则或者使置于栈顶的括号出栈,最急迫的期待得以消解,或者是不合法的情况。

Search

    Post Directory