繁体   English   中英

排序插入双向链表

[英]Sorted Insert Doubly Linked List

我正在尝试进行插入排序 function 以便它会自行排序,然后它可以从上到下以升序显示,也可以从下到上降序显示。 它可以显示从上到下升序排序,但不能从下到上降序显示。 有什么帮助吗?

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++
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM