1.案例分析
- 当将一个十进制整数N转换为八进制数时,在计算过程中,把N与8求余得到的八进制数的各位依次进栈,计算完毕后将栈中的八进制数依次出栈输出,输出结果就是待求得的八进制数。
2.算法步骤
- ①初始化一个空栈S。
- ②当十进制数N非零时,循环执行以下操作:
- 把N与8求余得到的八进制数压入栈S;
- N更新为N与8的商。
- ③当栈S非空时,循环执行以下操作:
- 弹出栈顶元素e;
- 输出e
3.算法描述
void conversion(int N)
{//对于任意一个非负十进制数,打印输出与其等值的八进制数
int e;
LinkStack S;
if (InitStack(S))
{
printf("链栈S初始化成功!\n");
}
else
{
printf("链栈S初始化失败!\n");
}
while (N) //当N非零时,循环
{
Push(S, N % 8); // 把N与8求余得到的八进制数压入栈S
N = N / 8; // N更新为N与8的商
}
printf("转化为八进制数是:");
while (S) // 当栈S非空时,循环
{
Pop(S, e); //弹出栈顶元素e
printf("%d", e); //输出e
}
}
4.代码实现
- main.cpp