使用插入排序对双向链表C ++进行排序

时间:2016-05-04 00:59:42

标签: c++ sorting pointers linked-list

我正在尝试使用从最大值到最小值的插入排序对双向链表进行排序。但是,插入排序不起作用,如果我使用它,程序崩溃。对双向链表使用插入排序对我来说非常困惑,所以我感谢任何帮助。

template <typename T>
class Node
{
private:
    T item;
    shared_ptr<Node<T>> next;
    shared_ptr<Node<T>> prev;

public:
    T getItem() { return item; }
   shared_ptr<Node<T>>& getNext() { return next; }
   shared_ptr<Node<T>>& getPrev() { return prev; }
}

这是导致崩溃的插入排序。我可以不正确地交换节点吗?

void insertionSort()
    {
        shared_ptr<Node<T>> curPtr = top;
        shared_ptr<Node<T>> temp;
        shared_ptr<Node<T>> rover;

        while (curPtr != nullptr)
        {
            temp = curPtr;
            rover = curPtr->getPrev();

            while (rover != nullptr && temp->getItem() > rover->getItem())
            {

                rover = rover->getNext()->getNext();
                rover = rover->getPrev();
            }

            rover->getNext()->getNext() = temp;
            curPtr = curPtr->getNext();
        }
    }

0 个答案:

没有答案
相关问题