文件名称:栈的典型应用-web服务稳定性测试 负载测试 可靠性测试 测试报告
文件大小:10.35MB
文件格式:PDF
更新时间:2024-07-30 10:59:07
数据结构 邓俊辉 清华大学 mooc学堂在线 教材
§4.3 栈癿典型应用 第4章 栈不队列
9900
§4.3 栈的典型应用
4.3.1 逆序输出
在栈所擅长解决的典型问题中,有一类具有以下共同特征:首先,虽有明确的算法,但其解
答却以线性序列的形式给出;其次,无论是递归还是迭代实现,该序列都是依逆序计算输出的;
最后,输入和输出规模不确定,难以事先确定盛放输出数据的容器大小。因其特有的“后进先出”
特性及其在容量方面的自适应性,使用栈来解决此类问题可谓恰到好处。
进制转换
考查如下问题;任给十进制整数n,将其转换为进制的表示形式。比如 = 8时有
12345(10) = 30071(8)
一般地,设 n = (dm ... d2 d1 d0)() = dm
m
+ ... + d2
2
+ d1
1
+ d0
0
若记 ni = (dm ... di+1 di)()
则有 di = ni % 和 ni+1 = ni /
这一递推关系对应的计算流程如下。可见,其输出的确为长度不定的逆序线性序列。
图4.4 迕刢转换算法流秳
递归实现
根据如图4.4所示的计算流程,可得到如代码4.2所示递归式算法。
1 void convert(Stack