编写程序实现顺序栈的初始化、判断栈空否、入栈和出栈等
时间: 2023-05-30 12:02:58 浏览: 104
以下是Python语言的顺序栈实现:
```python
class SeqStack:
def __init__(self, size=10):
self.stack = [None] * size
self.top = -1
self.size = size
def is_empty(self):
return self.top == -1
def is_full(self):
return self.top == self.size - 1
def push(self, data):
if self.is_full():
print("Stack overflow")
return False
self.top += 1
self.stack[self.top] = data
return True
def pop(self):
if self.is_empty():
print("Stack underflow")
return None
data = self.stack[self.top]
self.top -= 1
return data
```
首先,我们定义了一个`SeqStack`类,它包括初始化、判断栈空否、判断栈满否、入栈和出栈等方法。
在初始化方法中,我们创建一个长度为`size`的列表,并将栈顶指针`top`初始化为-1。
在判断栈空否方法`is_empty`中,如果栈顶指针`top`等于-1,表示栈为空,返回True;否则返回False。
在判断栈满否方法`is_full`中,如果栈顶指针`top`等于`size-1`,表示栈已满,返回True;否则返回False。
在入栈方法`push`中,首先判断栈是否已满,如果已满则输出提示信息并返回False;否则将栈顶指针`top`加1,将数据`data`存储在栈顶位置,并返回True。
在出栈方法`pop`中,首先判断栈是否为空,如果为空则输出提示信息并返回None;否则取出栈顶数据`data`,栈顶指针`top`减1,然后返回`data`。
我们可以进行如下测试:
```python
stack = SeqStack(5)
print(stack.is_empty()) # True
print(stack.is_full()) # False
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
stack.push(5)
print(stack.is_empty()) # False
print(stack.is_full()) # True
print(stack.push(6)) # Stack overflow
print(stack.pop()) # 5
print(stack.pop()) # 4
print(stack.pop()) # 3
print(stack.pop()) # 2
print(stack.pop()) # 1
print(stack.pop()) # Stack underflow
```
输出结果:
```
True
False
False
True
Stack overflow
5
4
3
2
1
Stack underflow
```
可以看到,我们的顺序栈实现已经可以正常运行。
阅读全文