Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将双链接列表从低到高排序_C++_Linked List_Doubly Linked List - Fatal编程技术网

C++ 将双链接列表从低到高排序

C++ 将双链接列表从低到高排序,c++,linked-list,doubly-linked-list,C++,Linked List,Doubly Linked List,当我在列表中添加数字时,我必须对列表进行排序,但我不知道我做错了什么。如果我输入9,5,7,它将打印出7,5,9。所以我假设它会增加到列表的前面 到目前为止,我一直在对列表进行排序: if (Head == NULL) { Head = newNode; newNode->prev = Head; } else { Node *curr = Head; while (curr->next != NULL && curr->next

当我在列表中添加数字时,我必须对列表进行排序,但我不知道我做错了什么。如果我输入
9,5,7
,它将打印出
7,5,9
。所以我假设它会增加到列表的前面

到目前为止,我一直在对列表进行排序:

if (Head == NULL)
{
    Head = newNode;
    newNode->prev = Head;
}
else
{
    Node *curr = Head;
    while (curr->next != NULL && curr->next->data < newNode->data )
    {
        curr->next = curr;
    }

    if (curr == Head)
    {
        Head = newNode;
        curr->prev = newNode;
        newNode->next = curr;
        newNode->prev = Head;
    }
    else if (curr->next != NULL)
    {
        curr->prev->next = newNode;
        newNode->prev = curr;
        newNode->next = curr->next;
        curr->next->prev = newNode;
    }
    else
    {
        newNode->prev = curr;
        curr->next = newNode;
    }
}
if(Head==NULL)
{
头=新节点;
newNode->prev=头部;
}
其他的
{
节点*curr=头部;
while(curr->next!=NULL&&curr->next->datadata)
{
当前->下一步=当前;
}
如果(当前==水头)
{
头=新节点;
curr->prev=newNode;
新建节点->下一步=当前;
newNode->prev=头部;
}
else if(当前->下一步!=NULL)
{
当前->上一个->下一个=新节点;
newNode->prev=curr;
新建节点->下一步=当前->下一步;
当前->下一步->上一步=新节点;
}
其他的
{
newNode->prev=curr;
curr->next=newNode;
}
}
要开始更正此问题,请执行以下操作:

while (curr->next != NULL && curr->next->data < newNode->data )
{
    curr=curr->next;
}
while(curr->next!=NULL&&curr->next->datadata)
{
当前=当前->下一步;
}

所以我假设它会添加到列表的前面——为什么要假设?调试您的代码以查看发生了什么。您没有正确地将内容插入列表,即使列表为空。