void delete_priority (struct pqueue **P, unsigned int priority) {
if (P == NULL) {
return;
}
struct pqueue *tmp;
struct pqueue *prev;
tmp = *P;
prev = NULL;
while(tmp != NULL){
if (tmp->priority == priority) {
struct queue *mini = tmp->queue;
if (prev != NULL) {
prev->next = tmp->next;
}
free(tmp);
struct queue *mini_next, *qlast;
if (mini == NULL) {
return;
}
do {
mini_next = mini->next;
free(mini);
mini = mini_next;
} while (mini != NULL);
return;
}
prev = tmp;
tmp = tmp->next;
}
}
int count_enqueued (struct pqueue *P, unsigned int priority) {
struct pqueue *tmp = P;
if (tmp == NULL) {
return 0;
}
do {
if (tmp->priority == priority) {
int count = 0;
struct queue *mini_tmp;
mini_tmp = tmp->queue;
if (mini_tmp == NULL) {
return 0;
}
do {
count++;
mini_tmp = mini_tmp->next;
} while (mini_tmp != NULL);
return count;
}
tmp = tmp->next;
} while (tmp != NULL);
}
Я тестировал этот код на https://codeboard.io/projects/131853. Вторая функция в порядке, но я не понимаю, что не так с первой. Как будто она не может справиться с удалением 3 элементов из очереди. Если бы вы могли мне помочь, было бы здорово