栈操作函数实现进制转换
时间: 2023-10-12 07:30:20 浏览: 39
好的,下面是一个使用栈操作函数实现进制转换的示例:
```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 self.is_empty():
raise ValueError('Stack is empty')
return self.items.pop()
def peek(self):
if self.is_empty():
raise ValueError('Stack is empty')
return self.items[-1]
def dec_to_base(n, base):
digits = "0123456789ABCDEF"
stack = Stack()
while n > 0:
digit = n % base
stack.push(digits[digit])
n = n // base
result = ''
while not stack.is_empty():
result += stack.pop()
return result
```
这个函数与之前的进制转换函数类似,但在计算出每个位的数字后,它将其压入栈中而不是直接添加到结果字符串中。最后,它使用 pop() 操作从栈中取出每个数字,并将它们添加到结果字符串的末尾,以得到正确的进制转换结果。
例如,将十进制数 255 转换为十六进制数可以这样调用该函数:
```python
>>> dec_to_base(255, 16)
'FF'
```
这个函数还可以通过调整 digits 字符串的内容来支持其他进制的转换,例如八进制或二进制。
阅读全文