1. 讲解:
2. C++代码实现:
#include <stdlib.h> #include <iostream> using namespace std; #define ElemType int typedef struct LinkNode{ ElemType data; struct LinkNode* next; }LinkNode; typedef struct { LinkNode* front, * rear; }LinkQueue; // 初始化 void InitQueue(LinkQueue& Q) { Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode)); Q.front->next = NULL; } // 判断是否为空 bool IsEmpty(LinkQueue Q) { if (Q.front == Q.rear) return true; else return false; } // 入队 bool EnQueue(LinkQueue& Q, ElemType e) { LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode)); if (s == NULL) return false; s->data = e; s->next = NULL; Q.rear->next = s; Q.rear = s; } // 出队 bool DeQueue(LinkQueue& Q, ElemType& e) { if (IsEmpty(Q)) return false; // 空队 LinkNode* s = Q.front->next; Q.front->next = s->next; e = s->data; if (s == Q.rear) { // 最后一个元素出队时 Q.rear = Q.front; } free(s); return true; } int main() { LinkQueue Q; InitQueue(Q); // 初始化队列 // 入队操作 for (int i = 1; i <= 5; ++i) { EnQueue(Q, i * 10); cout << "入队元素:" << i * 10 << endl; } // 出队操作 ElemType e; while (!IsEmpty(Q)) { DeQueue(Q, e); cout << "出队元素:" << e << endl; } return 0; }