当前位置:实例文章 » 其他实例» [文章]【C++初阶】介绍stack_queue及OJ题

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

相关标签:c++开发语言
其他信息

其他资源

Top