如何从C中的队列中取出最小元素
How to dequeue the smallest element from queue in C
我创建了一个队列并将一些值加入队列。然后,我想从队列中取出最小值。我通过线性搜索得到了最小值。但是我不知道找到最小值后如何处理前后。
#include <stdio.h>
#define SIZE 5
void enQueue(int);
void deQueue();
int items[SIZE], front = -1, rear = -1;
int main() {
enQueue(3);
enQueue(5);
enQueue(4);
enQueue(1);
enQueue(2);
printf("Deleted value is %d\n",deQueue());
return 0;
}
void enQueue(int value) {
if (rear == SIZE - 1)
printf("\nQueue is Full!!");
else {
if (front == -1)
front = 0;
rear++;
items[rear] = value;
printf("\nInserted -> %d", value);
}
}
int deQueue() {
if (front == -1)
exit(1);
else {
int min=0;
for(int i=front;i<rear;i++){
if(items[min]>items[i])
min=i;
}
int value=items[min];
//What should I do then for front and rear in order to remove the deleted value
return value;
}
}
items[min]=items[rear];
rear--;
我创建了一个队列并将一些值加入队列。然后,我想从队列中取出最小值。我通过线性搜索得到了最小值。但是我不知道找到最小值后如何处理前后。
#include <stdio.h>
#define SIZE 5
void enQueue(int);
void deQueue();
int items[SIZE], front = -1, rear = -1;
int main() {
enQueue(3);
enQueue(5);
enQueue(4);
enQueue(1);
enQueue(2);
printf("Deleted value is %d\n",deQueue());
return 0;
}
void enQueue(int value) {
if (rear == SIZE - 1)
printf("\nQueue is Full!!");
else {
if (front == -1)
front = 0;
rear++;
items[rear] = value;
printf("\nInserted -> %d", value);
}
}
int deQueue() {
if (front == -1)
exit(1);
else {
int min=0;
for(int i=front;i<rear;i++){
if(items[min]>items[i])
min=i;
}
int value=items[min];
//What should I do then for front and rear in order to remove the deleted value
return value;
}
}
items[min]=items[rear];
rear--;