编写代码,实现一个栈(Stack)的类。栈是只能在一端插入和删除数据的序列。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)
时间: 2023-06-27 13:02:19 浏览: 139
可以使用 Python 中的列表(list)来实现栈的类。具体实现如下:
```python
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if self.is_empty():
raise IndexError("pop from empty stack")
return self.items.pop()
def peek(self):
if self.is_empty():
raise IndexError("peek from empty stack")
return self.items[-1]
def size(self):
return len(self.items)
```
在上面的代码中,我们定义了一个 Stack 类,它包含以下方法:
- `__init__()`: 初始化一个空列表作为栈的存储空间。
- `is_empty()`: 判断栈是否为空,如果栈为空则返回 True,否则返回 False。
- `push(item)`: 将元素 item 压入栈顶。
- `pop()`: 弹出并返回栈顶元素,如果栈为空则抛出 IndexError 异常。
- `peek()`: 返回栈顶元素,但不弹出元素,如果栈为空则抛出 IndexError 异常。
- `size()`: 返回栈中元素的数量。
使用示例:
```python
s = Stack()
print(s.is_empty()) # True
s.push(1)
s.push(2)
s.push(3)
print(s.size()) # 3
print(s.peek()) # 3
print(s.pop()) # 3
print(s.size()) # 2
```
上面的代码创建了一个空栈 s,并向其中压入了元素 1、2、3。然后分别调用了 size()、peek()、pop() 方法,最终输出了栈中元素的数量和弹出的元素。
阅读全文