【C++初阶】介绍stack_queue及OJ题
发布人:shili8
发布时间:2025-03-12 19:00
阅读次数:0
**C++ 初阶: 栈和队列**
在计算机科学中,栈和队列是两种基本的数据结构,它们分别用于存储和管理元素的顺序。作为一名初学者,理解这些概念对于编写高效且正确的代码至关重要。
**栈 (Stack)**栈是一种后进先出 (LIFO) 的数据结构,即最后添加的元素将首先被移除。栈通常使用一个数组或链表来实现。
### 栈的基本操作:
1. **push**: 将元素添加到栈顶。
2. **pop**: 移除栈顶元素。
3. **peek**: 查看栈顶元素(但不移除)。
### C++ 中的栈实现:
cpp#include <iostream> using namespace std; class Stack { private: int* elements; int top; // 栈顶指针 int capacity; // 容量public: Stack(int capacity) : capacity(capacity), top(-1) { elements = new int[capacity]; } ~Stack() { delete[] elements; } void push(int element) { if (top == capacity -1) { cout << "栈已满!" << endl; return; } elements[++top] = element; } int pop() { if (top == -1) { cout << "栈为空!" << endl; return -1; // 返回-1表示出错 } return elements[top--]; } int peek() { if (top == -1) { cout << "栈为空!" << endl; return -1; // 返回-1表示出错 } return elements[top]; } };
### 栈的使用示例:
cppint main() { Stack stack(5); stack.push(10); stack.push(20); stack.push(30); cout << "栈顶元素:" << stack.peek() << endl; // 输出30 int popped = stack.pop(); cout << "弹出元素:" << popped << endl; // 输出30 return0; }
**队列 (Queue)**队列是一种先进先出 (FIFO) 的数据结构,即最先添加的元素将首先被移除。队列通常使用一个数组或链表来实现。
### 队列的基本操作:
1. **enqueue**: 将元素添加到队尾。
2. **dequeue**: 移除队头元素。
3. **peek**: 查看队头元素(但不移除)。
### C++ 中的队列实现:
cpp#include <iostream> using namespace std; class Queue { private: int* elements; int front; // 队头指针 int rear; // 队尾指针 int capacity; // 容量public: Queue(int capacity) : capacity(capacity), front(0), rear(-1) { elements = new int[capacity]; } ~Queue() { delete[] elements; } void enqueue(int element) { if (rear == capacity -1) { cout << "队列已满!" << endl; return; } elements[++rear] = element; } int dequeue() { if (front > rear) { cout << "队列为空!" << endl; return -1; // 返回-1表示出错 } return elements[front++]; } int peek() { if (front > rear) { cout << "队列为空!" << endl; return -1; // 返回-1表示出错 } return elements[front]; } };
### 队列的使用示例:
cppint main() { Queue queue(5); queue.enqueue(10); queue.enqueue(20); queue.enqueue(30); cout << "队头元素:" << queue.peek() << endl; // 输出10 int dequeued = queue.dequeue(); cout << "弹出元素:" << dequeued << endl; // 输出10 return0; }
**总结**
本文介绍了栈和队列的基本概念、操作以及 C++ 中的实现。通过这些例子,你应该能够理解如何使用栈和队列来解决实际问题。