用c++应用数据结构栈设计算法并实现十进制整数转换为其他进制整数
时间: 2024-10-11 22:13:21 浏览: 30
C++实现的任意进制转换(数据结构——栈和队列)
在C++中,我们可以利用栈这种线性数据结构来实现将十进制整数转换为其他进制整数的算法,比如二进制、八进制或十六进制。这里我们以二进制为例说明:
```cpp
#include <iostream>
#include <stack>
#include <string>
// 定义字符映射,用于存储各个进制下的数字
std::map<char, int> digit_map = { {'0', 0}, {'1', 1}, {'2', 2}, {'3', 3}, {'4', 4},
{'5', 5}, {'6', 6}, {'7', 7}, {'8', 8}, {'9', 9},
{'A', 10}, {'B', 11}, {'C', 12}, {'D', 13}, {'E', 14},
{'F', 15} };
// 将十进制整数转换为指定进制字符串
std::string decimalToBase(int num, int base) {
std::stack<int> digits;
while (num > 0) {
digits.push(num % base);
num /= base;
}
// 从栈顶开始,依次取出每一位数字,并转换为字符
std::string result;
while (!digits.empty()) {
result += digit_map['0'+digits.top()];
digits.pop();
}
return result; // 逆序得到最终结果,因为栈是后进先出(LIFO)
}
int main() {
int decimal_num = 123;
int base = 2; // 转换为二进制
std::cout << "Decimal to Binary: " << decimalToBase(decimal_num, base) << std::endl;
return 0;
}
```
在这个例子中,我们首先将十进制数`num`除以目标进制`base`,并将余数压入栈中。然后反复执行这个过程,直到`num`变为0。最后,从栈中弹出元素并转换为对应的字符,注意字符顺序会相反(因为栈是后进先出),所以我们需要反向拼接。
阅读全文