数据结构【栈和队列】
发布人:shili8
发布时间:2025-03-05 10:13
阅读次数:0
**数据结构之栈和队列**
在计算机科学中,数据结构是指组织和存储数据的方式。栈和队列是两种常见的线性数据结构,它们都有特定的插入和删除顺序。
### 栈栈是一种后进先出(LIFO)的数据结构,即最后添加的元素将最先被移除。栈可以用数组或链表来实现。
#### 栈的基本操作1. **push**: 将元素添加到栈顶。
2. **pop**: 移除栈顶元素。
3. **peek**: 查看栈顶元素,但不移除。
4. **isEmpty**: 检查栈是否为空。
#### 栈的实现我们可以使用数组或链表来实现栈。下面是使用数组实现栈的示例代码:
class Stack: def __init__(self, max_size): self.max_size = max_size self.stack = [None] * max_size self.top = -1 def push(self, element): if self.top == self.max_size -1: print("Stack is full.") return self.top +=1 self.stack[self.top] = element def pop(self): if self.isEmpty(): print("Stack is empty.") return None top_element = self.stack[self.top] self.stack[self.top] = None self.top -=1 return top_element def peek(self): if self.isEmpty(): print("Stack is empty.") return None return self.stack[self.top] def isEmpty(self): return self.top == -1# 示例使用stack = Stack(5) stack.push(1) stack.push(2) print(stack.peek()) # 输出:2print(stack.pop()) # 输出:2print(stack.isEmpty()) # 输出: False
### 队列队列是一种先进先出(FIFO)的数据结构,即最先添加的元素将最先被移除。队列可以用数组或链表来实现。
#### 队列的基本操作1. **enqueue**: 将元素添加到队尾。
2. **dequeue**: 移除队首元素。
3. **peek**: 查看队首元素,但不移除。
4. **isEmpty**: 检查队列是否为空。
#### 队列的实现我们可以使用数组或链表来实现队列。下面是使用链表实现队列的示例代码:
class Node: def __init__(self, value): self.value = value self.next = Noneclass Queue: def __init__(self): self.front = None self.rear = None def enqueue(self, value): node = Node(value) if not self.front: self.front = self.rear = node else: self.rear.next = node self.rear = node def dequeue(self): if not self.front: print("Queue is empty.") return None value = self.front.value self.front = self.front.next if not self.front: self.rear = None return value def peek(self): if not self.front: print("Queue is empty.") return None return self.front.value def isEmpty(self): return not self.front# 示例使用queue = Queue() queue.enqueue(1) queue.enqueue(2) print(queue.peek()) # 输出:1print(queue.dequeue()) # 输出:1print(queue.isEmpty()) # 输出: False
### 总结栈和队列是两种常见的线性数据结构,它们都有特定的插入和删除顺序。栈是一种后进先出(LIFO)的数据结构,队列是一种先进先出(FIFO)的数据结构。通过使用数组或链表来实现栈和队列,我们可以轻松地进行基本操作,如push、pop、peek和isEmpty等。