当前位置:实例文章 » 其他实例» [文章]C++ stack和queue 模拟实现

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++来模拟栈和队列的实现。我们分别定义了一个基本的栈类和队列类,并提供了它们的构造函数、析构函数、添加元素、删除元素、查看栈顶或队首元素以及判断是否为空等方法。在实际应用中,栈和队列是非常常见的数据结构,它们可以用于实现各种算法和程序逻辑。

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

其他资源

Top