利用栈将十进制数N转换为二进制数输出,转换方法利用辗转除以2取余数法,初始化栈顶为-1,写出定义顺序栈、初始化栈、入栈、出栈、判断空栈、应用测试。写出完整代码
时间: 2024-10-17 11:14:56 浏览: 9
将十进制数转换为二进制数可以使用栈的数据结构,通过不断对数字进行整除2并取余的操作来构建二进制位。这里是一个使用Python语言的简单实现:
```python
class Stack:
def __init__(self):
self.stack = [-1] # 初始化栈顶为-1
def push(self, num):
if num >= 0:
self.stack.append(num)
else:
while self.stack[-1] != -1:
self.stack.pop()
self.stack.append(-1)
def pop(self):
if len(self.stack) > 0 and self.stack[-1] == -1:
self.stack.pop() # 取消负号标志
return int(''.join(map(str, self.stack[::-1])) or '0') # 二进制转换
elif not self.is_empty():
return self.stack.pop()
def is_empty(self):
return len(self.stack) == 1 and self.stack[0] == -1
def convert_to_binary(self, n):
while n > 0:
self.push(n % 2)
n //= 2
return self.pop()
# 应用测试
n = 42
binary_stack = Stack()
result = binary_stack.convert_to_binary(n)
print(f"十进制 {n} 转换成二进制是 {result}")
阅读全文