目录
堆栈与队列算法-以链表来实现队列
C++代码
堆栈与队列算法-以链表来实现队列
队列除了能以数组的方式来实现外,也可以用链表来实现。在声明队列的类中,除了和队列相关的方法外,还必须有指向队列前端和队列末尾的指针,即front和rear。
C++代码
#include<iostream>
using namespace std;class Node {
public:int data;Node* next;
};class Queue {
private:Node* front;Node* rear;public:Queue() {front = nullptr;rear = nullptr;}void Push(int num) {Node* newNode = new Node;newNode->data = num;newNode->next = nullptr;if (rear == nullptr)front = newNode;elserear->next = newNode;rear = newNode;}void Pop() {if (!(front == nullptr)) {if (front == rear)rear = nullptr;front = front->next;}}void Print() {while (true) {if (!(front == nullptr)) {cout << front->data << " ";Pop();}elsebreak;}}
};int main() {Queue* queue = new Queue();char ch = ' ';while (ch != 'E') {cout << "输入I:往队列加入一个数据;输入G:从队列中取出一个数据;输入E:结束程序" << endl;cout << "请输入:";cin >> ch;switch (ch){case 'I':cout << "请输入数据:";int val;cin >> val;queue->Push(val);break;case 'G':queue->Pop();break;default:break;}}cout << "队列中的数据:";queue->Print();return 0;
}
结果输出