Python编程:使基于数组的栈实现根据需要添加或删除额外的存储空间。
时间: 2024-12-06 11:25:33 浏览: 6
在Python中,基于数组实现的栈通常会采用动态数组(List)来保证足够的存储空间。以下是实现这一功能的关键步骤:
1. **初始化**:
使用列表作为底层存储结构,创建一个名为`StackArray`的类,包含一个私有变量`_data`用于保存元素。
```python
class StackArray:
def __init__(self):
self._data = []
```
2. **push方法**:
当需要添加元素时,如果当前数组已满,就创建一个新的更大的数组,然后将原数组的所有元素复制到新数组。
```python
def push(self, item):
if len(self._data) == max_size: # 设置最大容量 max_size
new_data = [None] * (2 * max_size)
new_data[:len(self._data)] = self._data
self._data = new_data
self._data.append(item)
```
3. **pop方法**:
如果数组不为空,直接弹出最后一个元素;否则抛出异常表示栈已空。
```python
def pop(self):
if not self.is_empty():
return self._data.pop()
else:
raise IndexError("Pop from empty stack")
```
4. **其他方法**:
添加`is_empty`和`size`方法检查栈是否为空以及获取当前大小。
```python
def is_empty(self):
return not bool(self._data)
def size(self):
return len(self._data)
```
阅读全文