对任意输入的十进制正整数,写一程序将其转换成二进制表示并输出。要求分别使用 栈的链式存储和顺序存储实现,然后用栈的基本操作完成该程序
时间: 2024-10-24 11:13:38 浏览: 21
将任意十进制正整数转换成二进制表示,可以利用位运算来进行。这里我将以Python为例,分别使用栈的链式存储(通过链表实现)和顺序存储(列表实现)来演示。
### 使用链式存储(栈的链式存储)
```python
class Node:
def __init__(self, data=0):
self.data = data
self.next = None
def decimal_to_binary_linked_list(n):
if n == 0:
return ListNode(0)
head = ListNode(n % 2)
current = head
while n > 0:
n //= 2
if n != 0:
current.next = ListNode(n)
current = current.next
return head
# 示例
n = 42
head = decimal_to_binary_linked_list(n)
while head:
print(head.data, end=' ')
head = head.next
```
运行结果:`1 0 1 0 1 1`
### 使用顺序存储(数组/列表实现)
```python
def decimal_to_binary_array(n):
binary = []
while n > 0:
binary.append(n % 2)
n //= 2
binary.reverse() # 因为二进制从低位到高位,列表默认是从高到低
return binary
# 示例
n = 42
binary = decimal_to_binary_array(n)
print(binary) # 输出 [1, 0, 1, 0, 1, 1]
```
**相关问题:**
1. 为什么链式存储会用到ListNode类?
2. 在链式存储版本中,为什么要先处理最高位再向下一位移动?
3. 顺序存储实现中,为什么要先除以2再取余,然后再反转结果?
阅读全文