4. 自定义数据结构栈。栈是一种后进先出(Last-In-First-Out)的数据结构。编写类 Stack,实现入栈、出栈、判断栈是否为空,是否满栈、以及改变栈容量等操作。 提示:Stack 类包括: 1) 私有成员 content,为一个列表,代表栈里的数据; 2) 私有成员 size,要求为整型,代表栈的容量; 3) 私有成员 current,要求为整型,代表栈当前数据的个数; 4) 方法 isempty,判断栈是否为空,返回 True/False; 5) 方法 empty,置空栈; 6) 方法 setSize,输入参数为新的栈的容量。注意新的栈容量可能小于原有的栈容量,统一将后进的元素删除; 7) 方法 isFull,判断栈是否为满,返回 True/False; 8) 方法 push,入栈,输入参数为新的元素; 9) 方法 pop,出栈; 10) 方法 show,打印当前栈的数据。 11) 自行设计测试函数验证 Stack 类代码的正确性。
时间: 2023-09-14 10:11:25 浏览: 79
数据结构 栈
以下是实现以上要求的 Stack 类代码:
```python
class Stack:
def __init__(self, size):
self.content = []
self.size = size
self.current = 0
def isempty(self):
return self.current == 0
def empty(self):
self.content = []
self.current = 0
def setSize(self, new_size):
self.size = new_size
while len(self.content) > new_size:
self.pop()
def isFull(self):
return self.current == self.size
def push(self, element):
if self.isFull():
return False
self.content.append(element)
self.current += 1
return True
def pop(self):
if self.isempty():
return False
self.content.pop()
self.current -= 1
return True
def show(self):
print(self.content)
```
以下是测试函数的示例:
```python
def test_stack():
s = Stack(3)
assert s.isempty() == True
s.push(1)
assert s.isempty() == False
assert s.isFull() == False
s.show()
s.push(2)
s.push(3)
assert s.isFull() == True
assert s.push(4) == False
s.show()
s.pop()
assert s.isFull() == False
s.show()
s.setSize(2)
assert s.isFull() == False
s.show()
s.empty()
assert s.isempty() == True
s.show()
```
阅读全文