#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... "; 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); }