【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++ 中的实现。通过这些例子,你应该能够理解如何使用栈和队列来解决实际问题。

