【问题标题】:Sorted Insert Doubly Linked List排序插入双向链表
【发布时间】:2019-11-12 06:04:13
【问题描述】:

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

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

【问题讨论】:

  • 你不会错过top-&gt;prev = p吗?
  • 如果新的节点值大于当前的最后一个节点会发生什么?您的循环无法处理这种情况。

标签: c++ doubly-linked-list


【解决方案1】:

循环退出有两种可能的原因; bottom-&gt;next 为 null 或 bottom-&gt;next-&gt;data &gt;= p-&gt;data

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

【讨论】:

    猜你喜欢
    • 2018-11-04
    • 2023-04-07
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多