链栈的基本操作和实现
时间: 2024-10-18 15:06:04 浏览: 34
链栈是一种基于节点的数据结构,它遵循“后进先出”(LIFO,Last In First Out)原则。其基本操作主要包括:
1. **压栈(Push)**:将元素添加到栈顶。新节点成为栈顶,并链接到当前栈顶节点之后。
2. **弹栈(Pop)**:删除并返回栈顶元素。通常会将栈顶节点的内容移除,然后将栈顶指针向下移动一位。
3. **查看栈顶元素(Peek 或 Top)**:获取但不删除栈顶元素。这通常不需要修改栈的状态。
4. **判断栈是否为空(IsEmpty)**:检查栈中是否有元素。如果没有元素,函数返回真。
5. **获取栈的大小(Size 或 Length)**:计算栈中元素的数量。
链栈的常见实现是通过定义一个节点类,每个节点包含数据域和一个指向下一个节点的指针。链栈本身则维护一个指向栈顶节点的引用。以下是链栈的一个简单Python实现示例:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.top = None
def is_empty(self):
return self.top is None
def push(self, data):
new_node = Node(data)
if not self.is_empty():
new_node.next = self.top
self.top = new_node
def pop(self):
if self.is_empty():
raise Exception("Stack is empty")
popped_data = self.top.data
self.top = self.top.next
return popped_data
def peek(self):
if self.is_empty():
raise Exception("Stack is empty")
return self.top.data
def size(self):
count = 0
current = self.top
while current:
count += 1
current = current.next
return count
```
阅读全文