能否提供一个使用链栈实现二进制到十进制或者反之的进制转换算法的示例代码?
时间: 2024-10-27 11:15:15 浏览: 21
java_十进制数转换为二进制,八进制,十六进制数的算法
5星 · 资源好评率100%
当然可以。我们可以使用链栈来模拟从二进制到十进制的转换过程,因为链栈的特性非常适合处理这种逐位相加的过程。这里是一个简单的Python代码示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def binary_to_decimal(binary_string):
# 创建链栈
stack = ListNode()
decimal_node = None
for bit in binary_string[::-1]: # 从右向左遍历二进制数
new_node = ListNode(int(bit))
if not decimal_node:
decimal_node = new_node
else:
new_node.next = stack.top
stack.top = new_node
if bit == '1':
# 如果当前位是1,则将前一位的结果翻倍并加上当前位
temp = stack.top
while temp.next:
temp = temp.next
temp.next = ListNode(0)
stack.top = temp.next
stack.top.val += 1
# 返回十进制结果,如果没有数字在栈顶则表示为0
return decimal_node.val if decimal_node else 0
# 测试
binary_string = "1010"
decimal_result = binary_to_decimal(binary_string)
print(f"Binary {binary_string} to Decimal is {decimal_result}")
# 反之,从十进制到二进制,你可以使用内置函数bin(),这里不做详细展示
```
这个例子展示了如何使用链栈来存储二进制的每一位及其对应的权值,直到所有的位都被处理完。
阅读全文