#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
using ElemType = int;
// 队列结点
class Node {
public:
ElemType data;
Node *next;
};
class Queue {
public:
Node *front;
Node *rear;
};
void initQueue(Queue &queue)
{
queue.front = (Node*)malloc(sizeof(Node)); // 起初都指向头结点
queue.rear = queue.front;
}
// 入队列,只能从尾部入
void addNode(Queue &queue, int val)
{
Node *q = (Node*)malloc(sizeof(Node));
q->data = val;
queue.rear->next = q;
queue.rear = q;
}
// 出队列,只能从头部出
void delNode(Queue &queue)
{
if (queue.front == queue.rear) {
cout << "queue is empty...\n";
return;
}
Node *p = queue.front->next;
cout << "此时的队首元素是:" << p->data << endl;
if (p == queue.rear) { // 只有一个元素时
queue.rear = queue.front;
free(p);
}
else {
queue.front = p->next;
free(p);
}
}
int main()
{
Queue queue;
initQueue(queue);
addNode(queue, 1);
addNode(queue, 2);
addNode(queue, 3);
delNode(queue);
}