c++链式队列
作者:野牛程序员:2023-08-23 14:45:11 C++阅读 2534
以下是一个简单的C++链式队列的示例代码:
#include <iostream> class Node { public: int data; Node* next; Node(int value) { data = value; next = nullptr; } }; class Queue { private: Node* front; Node* rear; public: Queue() { front = nullptr; rear = nullptr; } ~Queue() { while (front != nullptr) { Node* temp = front; front = front->next; delete temp; } } bool isEmpty() { return front == nullptr; } void enqueue(int value) { Node* newNode = new Node(value); if (isEmpty()) { front = newNode; rear = newNode; } else { rear->next = newNode; rear = newNode; } } void dequeue() { if (isEmpty()) { std::cout << "Queue is empty. Cannot dequeue." << std::endl; return; } Node* temp = front; front = front->next; delete temp; } int getFront() { if (isEmpty()) { std::cout << "Queue is empty." << std::endl; return -1; // You can choose a different way to handle this case } return front->data; } }; int main() { Queue queue; queue.enqueue(10); queue.enqueue(20); queue.enqueue(30); std::cout << "Front element: " << queue.getFront() << std::endl; queue.dequeue(); std::cout << "Front element after dequeue: " << queue.getFront() << std::endl; return 0; }
这是一个简单的链式队列实现,其中 Node
类表示队列中的节点,Queue
类表示链式队列。可以根据需要进行修改和扩展。记得在使用完毕后释放内存,这里在队列的析构函数中释放了所有节点的内存。
以下是使用结构体实现的C++链式队列示例代码:
#include <iostream> struct Node { int data; Node* next; Node(int value) { data = value; next = nullptr; } }; struct Queue { Node* front; Node* rear; Queue() { front = nullptr; rear = nullptr; } ~Queue() { while (front != nullptr) { Node* temp = front; front = front->next; delete temp; } } bool isEmpty() { return front == nullptr; } void enqueue(int value) { Node* newNode = new Node(value); if (isEmpty()) { front = newNode; rear = newNode; } else { rear->next = newNode; rear = newNode; } } void dequeue() { if (isEmpty()) { std::cout << "Queue is empty. Cannot dequeue." << std::endl; return; } Node* temp = front; front = front->next; delete temp; } int getFront() { if (isEmpty()) { std::cout << "Queue is empty." << std::endl; return -1; // You can choose a different way to handle this case } return front->data; } }; int main() { Queue queue; queue.enqueue(10); queue.enqueue(20); queue.enqueue(30); std::cout << "Front element: " << queue.getFront() << std::endl; queue.dequeue(); std::cout << "Front element after dequeue: " << queue.getFront() << std::endl; return 0; }
这段代码与之前的示例相似,只是使用了C++中的 struct
关键字来定义结构体而不是 class
,但其功能和实现方式基本相同。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c语言输出最大公约数和最小公倍数
- 下一篇:c++环形队列