排序插入的双向链接列表

问题描述 投票:0回答:1

我正在尝试创建一个插入排序功能,以便它可以对自身进行排序,然后可以按从上到下的升序显示,也可以从下到上的降序显示。它可以按从上到下的升序显示,但不能从下到上降序显示。有帮助吗?

void DoublyLinkedList::insert(int v){
    Node* p = new Node;
    p->data = v;
    p->next = nullptr;
    p->prev = nullptr;
    if(top == nullptr || top->data > p->data){
        p->next = top;
        top = p;
    }
    else{
        bottom = top;
        while(bottom->next != nullptr && bottom->next->data < p->data){
            bottom = bottom->next;
        }
        bottom->next->prev = p;
        p->next = bottom->next;
        bottom->next = p;
        p->prev = bottom->prev;
        bottom->prev = p;
    }   
    size++
}
c++ doubly-linked-list
1个回答
0
投票

退出循环有两个可能的原因; bottom->next为空或bottom->next->data >= p->data

循环后的代码假定后者是退出的原因,但请考虑当要插入的项大于列表中的所有元素时发生的情况。

© www.soinside.com 2019 - 2024. All rights reserved.