链队列实现
#include<iostream> using namespace std; typedef struct QNode { int data; struct QNode *next; }QNode, *QueuePtr; typedef struct { QueuePtr front;//指向第一个 QueuePtr rear;//指向最后一个 }LinkQueue; void InitQueue(LinkQueue &q) { q.front = new QNode; q.rear = q.front; q.front->next = NULL; } void DestroyQueue(LinkQueue &q) { while (q.front) { q.rear = q.front->next; free(q.front); q.front = q.rear; } } bool QueueEmpty(LinkQueue &q) { return(q.front == q.rear); } void GetHead(LinkQueue &q,int &e) { if (q.front == q.rear) return; e = q.front->next->data; } void EnQueue(LinkQueue &q, int e) { QueuePtr p = new QNode; if (!p) return; p->data = e; p->next = NULL; q.rear->next = p; q.rear = p; } void DeQueue(LinkQueue &q, int &e) { if (q.front == q.rear) return; QueuePtr p = q.front->next; e = p->data; q.front->next = p->next; if (q.rear == p) q.rear = q.front; delete p; }