在栈的顺序存储实现中,另有一种方法是将top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满?
时间: 2023-05-01 20:00:31 浏览: 137
以下是使用顺序存储实现堆栈,并将 top 定义为栈顶的上一个位置的程序示例:
```python
# 定义堆栈
class Stack:
def __init__(self, size):
self.size = size
self.stack = [None] * size
self.top = -1
# 入栈操作
def push(self, item):
if self.top == self.size - 1:
print("Stack is full")
else:
self.top += 1
self.stack[self.top] = item
# 出栈操作
def pop(self):
if self.top == -1:
print("Stack is empty")
else:
item = self.stack[self.top]
self.top -= 1
return item
# 判断堆栈是否为空
def is_empty(self):
return self.top == -1
# 判断堆栈是否已满
def is_full(self):
return self.top == self.size - 1
```
在这种实现中,堆栈的顶部被定义为栈顶的上一个位置,因此初始 top 为 -1。入栈操作时,将 top 加 1,并在新的栈顶位置存储数据。出栈操作时,返回栈顶位置的数据,并将 top 减 1。判断堆栈是否为空或满,可使用 `is_empty()` 和 `is_full()` 方法。
阅读全文