利用栈和队列进行进制转换代码
时间: 2024-10-12 20:07:48 浏览: 38
C++实现的任意进制转换(数据结构——栈和队列)
利用栈(Stack)和队列(Queue)进行进制转换是一种常见的算法技巧,特别是在将十进制数转换为其他进制数时,如二进制、八进制或十六进制。这里我们以二进制转换为例:
假设我们要将一个十进制数 `num` 转换为二进制,可以按照以下步骤操作:
1. 初始化一个空栈,用于存储每一位的权重(从最低位到最高位):权重为 2 的幂次方(如 2^0, 2^1, 2^2, ...)
2. 对于十进制数 `num`,不断除以 2 取余,直到商为 0:
- 每次取余得到的结果是当前的一位数值,将其压入栈中。
- 记录下每次相除得到的余数。
3. 将栈里的元素依次弹出,拼接起来就是对应的二进制数。
对于队列,由于它的先进先出特性,一般不太适合这个场景。但是如果你需要处理的是多位进制转换成多位数字(比如十进制转为任意进制),那么可以考虑使用队列来存储结果的各个部分,先添加高位部分,然后逐次填充低位部分。
下面是一个简单的Python示例(仅适用于整数):
```python
def decimal_to_binary(num):
stack = []
while num > 0:
remainder = num % 2
stack.append(remainder)
num //= 2
return ''.join(map(str, reversed(stack)))
# 示例
print(decimal_to_binary(10)) # 输出:1010
```
阅读全文