编写一个程序,在自定义函数中完成下列功能并在主函数中进行测试(下列要求中所说的栈均指顺序栈):(1)创建并初始化栈S。(2)判断栈S是否为空。(3)元素入栈,入栈元素:()()[([])]。(4)将栈顶元素出栈、保存到元素e中并输出。(5)销毁栈S。
时间: 2024-10-09 10:07:27 浏览: 15
首先,我们可以在Python中创建一个简单的栈类,包含push(入栈)、pop(出栈)、is_empty(判断空栈)和clear(销毁栈)等基本操作。这里是一个简单的实现:
```python
class Stack:
def __init__(self):
self.items = []
# 判断栈是否为空
def is_empty(self):
return not bool(self.items)
# 元素入栈
def push(self, item):
self.items.append(item)
# 出栈并返回顶部元素
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
raise IndexError("Stack is empty")
# 销毁栈
def clear(self):
self.items = []
```
接下来,我们可以编写主函数来进行测试:
```python
def main():
stack = Stack()
# 初始化栈
for element in "()()[([])]":
stack.push(element)
print("-- Test cases --")
print("Is the stack empty? ", stack.is_empty()) # 判断是否为空
top_element = stack.pop()
print(f"Top element before popping: {top_element}")
print("After popping:", stack.pop()) # 再次尝试出栈
print("Is the stack empty now? ", stack.is_empty())
# 销毁栈
stack.clear()
try:
stack.pop() # 应该会抛出异常,因为栈已清空
except IndexError as e:
print(e)
if __name__ == "__main__":
main()
```
在这个例子中,我们将给定的字符串作为元素依次入栈,然后检查栈是否为空,以及出栈元素。最后,销毁栈并再次尝试出栈,此时由于栈已经清空,会引发`IndexError`。