|
算法 3.1
void conversion ()
{
//
对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数
InitStack(S); //
构造空栈
cin >> N; //
输入一个十进制数
while(N)
{
Push(S,N % 8); //
"余数"入栈
N = N/8; // 非零"商"继续运算
} // while
while (!StackEmpty)
{ //
和"求余"所得相逆的顺序输出八进制的各位数
Pop(S,e);
cout << e;
} // while
} // conversion
|
|
当然这是利用栈的一个极其简单的例子。在这个例子中,栈的操作序列是直线式的,即先一味地入栈,然后一味地出栈。
你可能会说,用数组直接实现不也很简单吗?你可以试一下利用数组重新写这个算法,那么你一定能体会到在这个算法中用栈的好处了。
|
怎么样?你觉得好处在哪儿呢? |
|
|
你是否也觉得,栈的引入简化了程序设计的问题,突出了解决问题的根本所在。而用数组不仅掩盖了问题的本质,还要分散精力去考虑数组下标增减等细节问题。在以后几个例子中你将会看到,实际利用栈的问题中,入栈和出栈操作大都不是直线式的,而是交错进行的。 |
|
|
|