这个priorityQueue析构函数的时间复杂度是多少?

时间:2018-04-25 00:33:37

标签: c++ priority-queue doubly-linked-list

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

0 个答案:

没有答案