1. 讲解:
2. C++代码实现:
#include <stdlib.h> #include <iostream> using namespace std; #define MaxSize 10 #define ElemType int typedef struct { ElemType data[MaxSize]; int front, rear; }SqQueue; // 初始化队列 void InitQueue(SqQueue& Q) { Q.front = Q.rear = 0; } // 判断队列是否为空 bool QueueEmpty(SqQueue Q) { if (Q.front == Q.rear) return true; else return false; } // 入队 bool EnQueue(SqQueue& Q, ElemType e) { if ((Q.rear + 1) % MaxSize == Q.front) return false; // 队满 Q.data[Q.rear] = e; Q.rear = (Q.rear + 1) % MaxSize; return true; } // 出队 bool DeQueue(SqQueue& Q, ElemType& e) { if (QueueEmpty(Q)) return false; // 队空 e = Q.data[Q.front]; Q.front = (Q.front + 1) % MaxSize; return true; } // 查询队头元素 bool GetHead(SqQueue Q, ElemType& e) { if (QueueEmpty(Q)) return false; // 队空 e = Q.data[Q.front]; return true; } // 队列中元素个数 int Length(SqQueue Q) { return (Q.rear + MaxSize - Q.front) % MaxSize; } int main() { SqQueue myQueue; InitQueue(myQueue); // 初始化队列 // 入队操作 for (int i = 1; i <= 5; i++) { EnQueue(myQueue, i); } // 获取队头元素 ElemType headElement; GetHead(myQueue, headElement); cout << "队头元素为:" << headElement << endl; // 出队操作 ElemType dequeuedElement; DeQueue(myQueue, dequeuedElement); cout << "出队元素为:" << dequeuedElement << endl; // 输出队列中的元素个数 cout << "队列中的元素个数为:" << Length(myQueue) << endl; // 判断队列是否为空 if (QueueEmpty(myQueue)) { cout << "队列为空" << endl; } else { cout << "队列不为空" << endl; } return 0; }