建立一个空栈,并按要求完成链栈的相关操作: (1)编写入栈函数,随机产生10个100以内的整数,并按输入顺序依次入栈,考虑判断上溢情况; (2)编写出栈函数,从键盘输入出栈元素个数n(n<10),将n个元素出栈并显示出栈元素,考虑判断下溢情况; (3)编写取栈顶元素函数,若栈不为空,则取出栈顶元素显示;否则提示栈空。
时间: 2023-06-20 13:04:40 浏览: 74
好的,以下是代码实现:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedStack:
def __init__(self):
self.top = None
def is_empty(self):
return self.top is None
def push(self, data):
new_node = Node(data)
new_node.next = self.top
self.top = new_node
def pop(self):
if self.is_empty():
print("Stack underflow.")
return None
popped_node = self.top
self.top = self.top.next
popped_node.next = None
return popped_node.data
def top_element(self):
if self.is_empty():
print("Stack is empty.")
return None
return self.top.data
if __name__ == '__main__':
stack = LinkedStack()
for i in range(10):
data = random.randint(1, 100)
if not stack.is_full():
stack.push(data)
else:
print("Stack overflow.")
break
n = int(input("Enter the number of elements to be popped: "))
for i in range(n):
if not stack.is_empty():
print(stack.pop())
else:
print("Stack underflow.")
break
top_element = stack.top_element()
if top_element:
print("Top element of stack: ", top_element)
```
这里使用了链表来实现栈。在入栈操作中,我们首先要判断是否已经达到了栈的上限;在出栈操作中,我们首先要判断是否已经达到了栈的下限。在取栈顶元素操作中,我们需要判断栈是否为空。
阅读全文