如何用Python实现双栈(Two Stack)的基本操作?
时间: 2024-11-22 21:39:56 浏览: 11
Python实现的栈(Stack)
在 Python 中,我们可以使用两个独立的列表来模拟双栈(Two Stack),因为列表本身就可以看作是一个动态数组,可以方便地在两端添加和删除元素。以下是基本的操作:
1. 初始化双栈:
```python
class DualStack:
def __init__(self):
self.stack1 = []
self.stack2 = []
```
2. 入栈 (Push) 到第一个栈:
```python
def push1(self, item):
self.stack1.append(item)
```
3. 出栈 (Pop) 第一个栈:
```python
def pop1(self):
if not self.is_empty1():
return self.stack1.pop()
else:
raise Exception("Stack is empty")
```
4. 入栈到第二个栈:
```python
def push2(self, item):
self.stack2.insert(0, item)
```
5. 出栈从第二个栈:
```python
def pop2(self):
if not self.is_empty2():
return self.stack2.pop(0)
else:
raise Exception("Stack is empty")
```
6. 检查栈是否为空:
```python
def is_empty1(self):
return len(self.stack1) == 0
def is_empty2(self):
return len(self.stack2) == 0
```
7. 查看栈顶元素(视作入栈但不修改堆叠顺序):
```python
def peek1(self):
if not self.is_empty1():
return self.stack1[-1]
def peek2(self):
if not self.is_empty2():
return self.stack2[0]
```
阅读全文