目录
堆栈与队列算法-以链表来实现队列
队列除了能以数组的方式来实现外,也可以用链表来实现。在声明队列的类中,除了和队列相关的方法外,还必须有指向队列前端和队列末尾的指针,即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;
else
rear->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();
}
else
break;
}
}
};
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;
}
结果输出