栈应用-进制转换
思路
如下图所示,将需要转换进制的数除以进制得到的余数写在后面,商在下一轮循环中做被除数,知道商等于0,退出循环,逆序输出余数即为转换进制后的数,这一特点刚好可以用stack这一FILO特性的数据结构
代码实现
#include <iostream>
#include <stack>
using namespace std;
void convert(stack<char>& s, int n, int base)
{
char digit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
, 'A', 'B', 'C', 'D', 'E', 'F' };
while (n > 0)//当商数等于0时, 停止循环
{
s.push(digit[n % base]);
n /= base;
}
}
int main()
{
stack<char> s;
convert(s, 888745, 16);
while (!s.empty())
{
cout << s.top();
s.pop();
}
cout << endl;
system("pause");
return 0;
}
运行结果: