定义一个Stack类,包含list类型的私有属性data和指向栈顶位置的私有变量top,定义一个无参构造方法,初始化两个私有属性;另外需要定义入栈(push)、出栈(pop)、判断栈空(isEmpty)、取栈顶元素(getTop)、取栈中元素个数(getLen)的公共方法。 定义一个函数利用自己定会的Stack进行进制转换,可以计算任意进制的结果,把出栈后的序列转换为字符串返回给调用者 定义测试函数进行测试。
时间: 2024-02-15 13:03:32 浏览: 67
好的,以下是对应的Python代码实现:
```python
class Stack:
def __init__(self):
self.data = []
self.top = -1
def push(self, ele):
self.data.append(ele)
self.top += 1
def pop(self):
if self.isEmpty():
return None
else:
ele = self.data.pop()
self.top -= 1
return ele
def isEmpty(self):
return self.top == -1
def getTop(self):
if self.isEmpty():
return None
else:
return self.data[self.top]
def getLen(self):
return self.top + 1
def convert(num, base):
stack = Stack()
digits = "0123456789ABCDEF"
while num > 0:
rem = num % base
stack.push(digits[rem])
num //= base
result = ""
while not stack.isEmpty():
result += str(stack.pop())
return result
# 测试函数
def test_convert():
assert convert(10, 2) == '1010'
assert convert(32, 16) == '20'
assert convert(100, 8) == '144'
assert convert(255, 2) == '11111111'
print("所有测试用例通过!")
test_convert()
```
以上代码定义了一个Stack类,包含了入栈(push)、出栈(pop)、判断栈空(isEmpty)、取栈顶元素(getTop)、取栈中元素个数(getLen)的公共方法。另外,还定义了一个convert函数,利用Stack进行进制转换,把出栈后的序列转换为字符串返回给调用者。最后,通过定义测试函数test_convert对convert函数进行了测试。
阅读全文