顺序排队程序可以使用多种方法实现,以下是几种常见的实现方式:
1. 使用数组实现顺序队列
```c
include define MAXSIZE 100 typedef struct { int data[MAXSIZE]; int front; // 队首指针 int rear; // 队尾指针 } Queue; // 初始化队列 void initQueue(Queue *q) { q->front = -1; q->rear = -1; } // 入队操作 bool enQueue(Queue *q, int data) { if (q->rear == MAXSIZE - 1) { return false; // 队列已满 } q->data[++q->rear] = data; return true; } // 出队操作 int deQueue(Queue *q) { if (q->front == q->rear) { return -1; // 队列为空 } return q->data[q->front++]; } int main() { Queue q; initQueue(&q); enQueue(&q, 1); enQueue(&q, 2); enQueue(&q, 3); printf("出队元素: %d\n", deQueue(&q)); printf("出队元素: %d\n", deQueue(&q)); return 0; } ``` 2. 使用循环数组实现顺序队列 ```c include define MAXSIZE 100 typedef struct { int data[MAXSIZE]; int front; // 队首指针 int rear; // 队尾指针 } CircularQueue; // 初始化队列 void initQueue(CircularQueue *q) { q->front = 0; q->rear = -1; } // 入队操作 bool enQueue(CircularQueue *q, int data) { if ((q->rear + 1) % MAXSIZE == q->front) { return false; // 队列已满 } q->rear = (q->rear + 1) % MAXSIZE; q->data[q->rear] = data; return true; } // 出队操作 int deQueue(CircularQueue *q) { if (q->front == q->rear) { return -1; // 队列为空 } int data = q->data[q->front++]; return data; } int main() { CircularQueue q; initQueue(&q); enQueue(&q, 1); enQueue(&q, 2); enQueue(&q, 3); printf("出队元素: %d\n", deQueue(&q)); printf("出队元素: %d\n", deQueue(&q)); return 0; } ``` 3. 使用链表实现顺序队列