请你定义一个链栈,可以对链栈进行 “将某个元素入栈”、“弹出栈顶元素”、“取栈顶元素(不删除)”、“判断栈是否为空”、 “清空栈”等操作。键盘输入一些命令,可以执行上述操作。本题中,栈的元素为字符。
时间: 2023-04-28 19:06:20 浏览: 211
链栈是一种基于链表实现的栈,它具有以下操作:
1. 将某个元素入栈:将一个字符元素插入到链栈的栈顶。
2. 弹出栈顶元素:将链栈的栈顶元素弹出,并返回该元素的值。
3. 取栈顶元素(不删除):返回链栈的栈顶元素的值,但不删除该元素。
4. 判断栈是否为空:判断链栈是否为空,如果为空则返回 true,否则返回 false。
5. 清空栈:将链栈中的所有元素清空。
以下是一个示例代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.top = None
def is_empty(self):
return self.top is None
def push(self, data):
node = Node(data)
node.next = self.top
self.top = node
def pop(self):
if self.is_empty():
return None
data = self.top.data
self.top = self.top.next
return data
def peek(self):
if self.is_empty():
return None
return self.top.data
def clear(self):
self.top = None
# 测试代码
stack = Stack()
while True:
command = input("请输入命令:")
if command == "push":
data = input("请输入要入栈的字符:")
stack.push(data)
elif command == "pop":
data = stack.pop()
if data is None:
print("栈已空")
else:
print("弹出的字符为:", data)
elif command == "peek":
data = stack.peek()
if data is None:
print("栈已空")
else:
print("栈顶的字符为:", data)
elif command == "is_empty":
if stack.is_empty():
print("栈为空")
else:
print("栈不为空")
elif command == "clear":
stack.clear()
print("栈已清空")
else:
print("无效命令")
```
在上面的代码中,我们定义了一个 Node 类来表示链表中的节点,然后定义了一个 Stack 类来表示链栈。在 Stack 类中,我们使用一个 top 变量来表示链栈的栈顶节点。对于每个操作,我们都实现了相应的方法。在测试代码中,我们使用一个 while 循环来不断读取用户输入的命令,并执行相应的操作。
阅读全文