Я не уверен, является ли сложность времени O (n) или O (n ^ 2).Может кто-нибудь уточнить, пожалуйста?Я хочу сказать его O (n ^ 2) из-за обхода в деструкторе и обхода в findMin ().
findMin в основном просто перебирает двусвязный список, находит и возвращает минимальное значение.
~priorityQueue()
{
for(temp = head; temp->next != NULL; temp = temp->next)
{
extractMin();
}
}
double extractMin()
{
if (head == NULL)
//do nothing
min = findMin(head);
else if(min == head)
{
head = head->next;
head ->prev = NULL;
double output = min->data;
delete min;
return output;
}
else if (min == tail)
{
double output = min->data;
tail = tail->prev;
tail->next = NULL;
delete min;
return output;
}
else if(min == head && min == tail)
{
return min->data;
tail = NULL;
head = NULL;
}
else
{
double output = min->data;
min->prev->next = min->next;
min->next->prev = min->prev;
delete min;
return output;
}
}