我不确定时间复杂度是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;
}
}