用C语言编写算法将队列Q的元素逆序
时间: 2024-05-01 08:18:30 浏览: 10
以下是用C语言编写算法将队列Q的元素逆序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front, rear;
} Queue;
void init_queue(Queue *q) {
q->front = q->rear = -1;
}
int is_empty(Queue *q) {
return q->front == -1;
}
void enqueue(Queue *q, int x) {
if (q->rear == MAX_SIZE - 1) {
printf("Error: queue is full\n");
exit(-1);
}
q->data[++q->rear] = x;
if (q->front == -1) {
q->front = 0;
}
}
int dequeue(Queue *q) {
if (is_empty(q)) {
printf("Error: queue is empty\n");
exit(-1);
}
int x = q->data[q->front++];
if (q->front > q->rear) {
q->front = q->rear = -1;
}
return x;
}
void reverse(Queue *q) {
if (is_empty(q)) {
return;
}
int x = dequeue(q);
reverse(q);
enqueue(q, x);
}
void print_queue(Queue *q) {
while (!is_empty(q)) {
printf("%d ", dequeue(q));
}
printf("\n");
}
int main() {
Queue q;
init_queue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
enqueue(&q, 4);
enqueue(&q, 5);
printf("Original queue: ");
print_queue(&q);
reverse(&q);
printf("Reversed queue: ");
print_queue(&q);
return 0;
}
```
对于您的第二个问题,“我在前面对你说了什么?”以下是一个笑话:
为什么儿童手套的中指比其他手指更长?因为它是警察控告小偷时最常用的手势。