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)
{
当前=当前->下一步;
}
所以我假设它会添加到列表的前面——为什么要假设?调试您的代码以查看发生了什么。您没有正确地将内容插入列表,即使列表为空。