用顺序栈实现将十进制数转换为八进制数
时间: 2024-05-14 20:16:15 浏览: 76
用栈实现十进制转换为八进制
以下是用顺序栈实现将十进制数转换为八进制数的代码实现:
```python
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def size(self):
return len(self.items)
def decimal_to_octal(decimal_num):
stack = Stack()
while decimal_num > 0:
remainder = decimal_num % 8
decimal_num //= 8
stack.push(remainder)
octal_num = ""
while not stack.is_empty():
octal_num += str(stack.pop())
return octal_num
# 测试代码
print(decimal_to_octal(10)) # 12
print(decimal_to_octal(30)) # 36
print(decimal_to_octal(100)) # 144
```
首先定义了一个栈类 Stack,包括了栈的基本操作。然后定义了一个函数 decimal_to_octal,该函数接收一个十进制数 decimal_num 作为参数,将其转换为八进制数,并返回转换后的结果。
在函数内部,我们首先创建了一个空栈 stack。然后使用 while 循环,每次将 decimal_num 对 8 取余,余数入栈,再将 decimal_num 除以 8,直到 decimal_num 为 0。此时,栈中保存的就是每个位上的数字。
接下来,我们将栈中的数字依次出栈,组成一个字符串 octal_num,并返回该字符串,即为转换后的八进制数。
最后,我们进行了简单的测试,验证了函数的正确性。
阅读全文