可以帮我将双栈的结构搞出来吗?
时间: 2024-05-09 14:20:22 浏览: 34
双栈的结构可以用两个栈来实现,其中一个栈用来存储数据,另一个栈用来存储最小值。
以下是一个基于数组的双栈结构的示例代码:
```python
class DoubleStack:
def __init__(self):
self.stack = []
self.min_stack = []
def push(self, val):
self.stack.append(val)
if not self.min_stack or val <= self.min_stack[-1]:
self.min_stack.append(val)
def pop(self):
if not self.stack:
return None
val = self.stack.pop()
if val == self.min_stack[-1]:
self.min_stack.pop()
return val
def get_min(self):
if not self.min_stack:
return None
return self.min_stack[-1]
```
在上面的代码中,我们使用了两个数组来实现双栈结构,其中一个数组`stack`用来存储数据,另一个数组`min_stack`用来存储最小值。
当我们往双栈中插入新值时,我们首先将新值插入到`stack`数组中。然后我们判断`min_stack`是否为空或者新值是否小于等于`min_stack`数组的最后一个元素。如果是,则将新值插入到`min_stack`数组中。
当我们从双栈中弹出一个值时,我们从`stack`数组中弹出最后一个元素,并将其存储到变量`val`中。然后我们判断`val`是否等于`min_stack`数组的最后一个元素。如果是,则将`min_stack`数组的最后一个元素也弹出。
当我们需要获取双栈中的最小值时,我们只需要返回`min_stack`数组的最后一个元素即可。如果`min_stack`数组为空,则返回`None`。
阅读全文