C++ stack和queue 模拟实现
发布人:shili8
发布时间:2025-02-05 04:07
阅读次数:0
**栈和队列的模拟实现**
在计算机科学中,栈和队列是两种基本的数据结构,它们分别用于存储和管理元素的顺序。栈是一种后进先出(LIFO)的数据结构,即最后添加的元素将首先被移除,而队列则是一种先进先出(FIFO)的数据结构,即最先添加的元素将首先被移除。在本文中,我们将讨论如何使用C++来模拟栈和队列的实现。
### 栈的模拟实现栈是一种后进先出(LIFO)的数据结构,它允许在栈顶部添加或删除元素。我们可以使用一个数组来模拟栈的行为。在本节中,我们将讨论如何使用C++来实现一个基本的栈类。
#### 栈类定义
cppclass Stack { private: int* elements; // 元素数组 int capacity; // 容量 int top; // 栈顶指针public: Stack(int capacity =10); // 构造函数 ~Stack(); // 析构函数 void push(int element); // 添加元素 int pop(); // 删除元素 int peek(); // 查看栈顶元素 bool isEmpty(); // 是否为空};
#### 栈类实现
cpp// 构造函数Stack::Stack(int capacity) { this->capacity = capacity; elements = new int[capacity]; top = -1; // 初始栈顶指针为-1} // 析构函数Stack::~Stack() { delete[] elements; //释放元素数组} // 添加元素void Stack::push(int element) { if (top == capacity -1) { // 如果栈满了,抛出异常 throw std::runtime_error("Stack is full"); } elements[++top] = element; // 将元素添加到栈顶} // 删除元素int Stack::pop() { if (isEmpty()) { // 如果栈为空,抛出异常 throw std::runtime_error("Stack is empty"); } return elements[top--]; // 删除栈顶元素并返回其值} // 查看栈顶元素int Stack::peek() { if (isEmpty()) { // 如果栈为空,抛出异常 throw std::runtime_error("Stack is empty"); } return elements[top]; // 返回栈顶元素的值} // 是否为空bool Stack::isEmpty() { return top == -1; // 栈空则返回true}
### 队列的模拟实现队列是一种先进先出(FIFO)的数据结构,它允许在队首部添加或删除元素。我们可以使用两个数组来模拟队列的行为。在本节中,我们将讨论如何使用C++来实现一个基本的队列类。
#### 队列类定义
cppclass Queue { private: int* elements; // 元素数组 int capacity; // 容量 int front; // 队首指针 int rear; // 队尾指针public: Queue(int capacity =10); // 构造函数 ~Queue(); // 析构函数 void enqueue(int element); // 添加元素 int dequeue(); // 删除元素 int peekFront(); // 查看队首元素 bool isEmpty(); // 是否为空};
#### 队列类实现
cpp// 构造函数Queue::Queue(int capacity) { this->capacity = capacity; elements = new int[capacity]; front = rear = -1; // 初始队首和队尾指针为-1} // 析构函数Queue::~Queue() { delete[] elements; //释放元素数组} // 添加元素void Queue::enqueue(int element) { if (rear == capacity -1) { // 如果队列满了,抛出异常 throw std::runtime_error("Queue is full"); } elements[++rear] = element; // 将元素添加到队尾} // 删除元素int Queue::dequeue() { if (isEmpty()) { // 如果队列为空,抛出异常 throw std::runtime_error("Queue is empty"); } return elements[front++]; // 删除队首元素并返回其值} // 查看队首元素int Queue::peekFront() { if (isEmpty()) { // 如果队列为空,抛出异常 throw std::runtime_error("Queue is empty"); } return elements[front]; // 返回队首元素的值} // 是否为空bool Queue::isEmpty() { return front == -1; // 队列空则返回true}
### 总结在本文中,我们讨论了如何使用C++来模拟栈和队列的实现。我们分别定义了一个基本的栈类和队列类,并提供了它们的构造函数、析构函数、添加元素、删除元素、查看栈顶或队首元素以及判断是否为空等方法。在实际应用中,栈和队列是非常常见的数据结构,它们可以用于实现各种算法和程序逻辑。