#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 10 typedef struct { int data[MAX_SIZE]; int front; int rear; } youxianduilie; void init(youxianduilie *q) { q->front = -1; q->rear = -1; } int is_empty(youxianduilie *q) { return q->front == -1; } int is_full(youxianduilie *q) { return q->rear == MAX_SIZE - 1; } void enqueue(youxianduilie *q, int item) { if (is_full(q)) { printf("Queue is full.\n"); return; } if (is_empty(q)) { q->front = q->rear = 0; q->data[q->rear] = item; return; } int i, j; for (i = q->rear; i >= q->front; i--) { if (item > q->data[i]) { q->data[i + 1] = q->data[i]; } else { break; } } q->data[i + 1] = item; q->rear++; } int dequeue(youxianduilie *q) { if (is_empty(q)) { printf("Queue is empty.\n"); return -1; } int item = q->data[q->front]; if (q->front == q->rear) { q->front = q->rear = -1; } else { q->front++; } return item; } int main() { youxianduilie q; init(&q); enqueue(&q, 5); enqueue(&q, 2); enqueue(&q, 7); enqueue(&q, 1); enqueue(&q, 3); while (!is_empty(&q)) { printf("%d ", dequeue(&q)); } return 0; }怎么修改为自己输入数据
时间: 2024-01-14 08:02:37 浏览: 22
可以在 main 函数中使用循环让用户输入数据并调用 enqueue 函数将数据插入优先队列中。修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} youxianduilie;
void init(youxianduilie *q) {
q->front = -1;
q->rear = -1;
}
int is_empty(youxianduilie *q) {
return q->front == -1;
}
int is_full(youxianduilie *q) {
return q->rear == MAX_SIZE - 1;
}
void enqueue(youxianduilie *q, int item) {
if (is_full(q)) {
printf("Queue is full.\n");
return;
}
if (is_empty(q)) {
q->front = q->rear = 0;
q->data[q->rear] = item;
return;
}
int i, j;
for (i = q->rear; i >= q->front; i--) {
if (item > q->data[i]) {
q->data[i + 1] = q->data[i];
} else {
break;
}
}
q->data[i + 1] = item;
q->rear++;
}
int dequeue(youxianduilie *q) {
if (is_empty(q)) {
printf("Queue is empty.\n");
return -1;
}
int item = q->data[q->front];
if (q->front == q->rear) {
q->front = q->rear = -1;
} else {
q->front++;
}
return item;
}
int main() {
youxianduilie q;
init(&q);
int n, item;
printf("Enter the number of items to enqueue: ");
scanf("%d", &n);
printf("Enter %d items to enqueue:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &item);
enqueue(&q, item);
}
printf("Dequeued items: ");
while (!is_empty(&q)) {
printf("%d ", dequeue(&q));
}
printf("\n");
return 0;
}
```
在运行程序时,会先让用户输入要插入的数据数量,然后让用户输入具体的数据。程序会先将数据插入优先队列中,然后再依次将优先队列中的数据取出并输出。