R7-1 栈的实现及基本操作 分数 35 给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。
时间: 2023-10-08 13:06:30 浏览: 144
好的,这是一道栈的基本操作题目。我们可以使用链表来实现栈。下面是代码实现:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.head = None
def push(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def pop(self):
if not self.head:
return "invalid"
data = self.head.data
self.head = self.head.next
return data
n = int(input())
stack = Stack()
for i in range(n):
op = input().split()
if op[0] == '1':
stack.push(int(op[1]))
else:
print(stack.pop())
```
代码解释:首先定义一个 `Node` 类来表示链表的节点,其中包含一个数据域和一个指针域。然后定义一个 `Stack` 类,其中包含一个头节点指针。对于每个操作,如果是压栈操作,就在头节点前插入一个新节点;如果是弹栈操作,就弹出头节点并返回数据域,如果栈为空则返回 "invalid"。
阅读全文