编写顺序栈算法
时间: 2023-07-19 12:15:29 浏览: 93
顺序栈是一种基于数组实现的栈,它具有后进先出(LIFO)的特点。以下是顺序栈的算法:
1. 初始化顺序栈:
- 创建一个长度为 n 的数组,表示顺序栈。
- 初始化栈顶指针 top 为 -1。
2. 判断栈是否为空:
- 如果 top == -1,则栈为空。
3. 判断栈是否已满:
- 如果 top == n-1,则栈已满。
4. 入栈操作:
- 如果栈未满,则将元素插入到栈顶(top+1)位置。
- 将 top 后移一位:top = top + 1。
5. 出栈操作:
- 如果栈非空,则将栈顶(top)位置的元素出栈。
- 将 top 前移一位:top = top - 1。
6. 获取栈顶元素:
- 如果栈非空,则返回栈顶(top)位置的元素。
7. 获取栈长度:
- 栈长度为 top + 1。
以下是该算法的 Python 代码实现:
```python
class ArrayStack:
def __init__(self, n):
self.stack = [0] * n
self.top = -1
def is_empty(self):
return self.top == -1
def is_full(self):
return self.top == len(self.stack) - 1
def push(self, value):
if not self.is_full():
self.top += 1
self.stack[self.top] = value
def pop(self):
if not self.is_empty():
value = self.stack[self.top]
self.top -= 1
return value
def get_top(self):
if not self.is_empty():
return self.stack[self.top]
def get_length(self):
return self.top + 1
```
该算法的时间复杂度为 O(1)。
阅读全文