在尾部入队列 enqueue
在头部出队列 dequeue
- 网络请求中数据包发送和接收
- 打印任务
- CPU 任务调度,排队入队列,等待 CPU 处理
- 数据缓冲:数据通信中,数据生产速度与消耗速度不匹配时,队列作为缓冲区,暂存数据
// C++ 队列实例 #include <queue> std::queue<int> q; q.push(1); //入队 q.push(2); q.pop(); // 出队
动态队列
#include <iostream> using namspace std; class Node { public: double data; Node* next; // pointer to next }; class Queue { public: Queue(); ~Queue(); bool IsEmpty(void); void Enqueue(double x); bool Dequeue(double &x); void DisplayQueue(void); private: Node* front; // front index Node* rear; int counter; // number of elements }; Queue::Queue() { front = rear = NULL; counter = 0; } Queue::~Queue() { double value; while (!IsEmpty()) Dequeue(value); } void Queue::Enqueue(double x) { Node* newNode = new Node; newNode->data = x; newNode->next = NULL; if (IsEmpty()) { front = newNode; rear = newNode; } else { rear->next = newNode; rear = newNode; } counter++; } bool Queue::Dequeue(double &x) { if(IsEmpty()) { cout << "Error: the queue is empty." << endl; return false; } else { x = front->data; Node* nexNode = front-next; delete front; front = nextNode; counter--; } }