尝试对链表进行排序时跳过节点
Skipped nodes when trying to sort linked list
我正在尝试对链表进行排序。
代码无法正常工作,它会跳过一些节点,检查如何在对节点进行排序时最大程度地减少问题。
void sortNodes(){
node *parrser = head, *current = NULL;
node*temp;
while (parrser->next!= NULL){
current = head;
while (current->next!= NULL){
// cout << current->no << "next" << current->next->no;
if (current->no > current->next->no){
temp = current->next;
current->next = temp->next;
temp->next = current;
}
else
current = current->next;
}
parrser = parrser->next;
}
}
代码将当前>否与当前>下一个>否进行比较。如果顺序不正确,代码应将当前与当前>next交换,但这需要将任何指向当前的内容更新,而代码当前没有这样做。
在这种情况下,冒泡排序将具有相对最大数字的节点移动到每个内部循环的列表末尾。外部循环每次都需要从列表的开头开始,以便数字最小的节点最终位于列表的前面。使用在完成任何交换时设置的交换标志,如果在传递后最终未设置,则排序完成。
与冒泡排序相比,创建一个新的空排序列表,然后从原始列表中删除节点并按顺序将它们插入到初始空排序列表中会更简单。
相关文章:
- 反向给定链表中的K节点
- 二叉排序树无法编译
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- C++ 链表合并排序的实现在连接 1 个以上节点的子列表时失败
- C bST删除节点会破坏排序算法
- 尝试对链表进行排序时跳过节点
- 按排序顺序将节点插入链表
- 排序链表-移动节点还是交换数据成员
- 保存时,yaml-cpp如何对节点进行重新排序
- 在已排序的双链接列表中插入节点
- 创建一个C++预排序迭代器,为循环提供树节点
- 插入节点时对链表进行排序
- 插入排序以对链接列表中的节点进行排序
- 将节点插入到不带头指针的排序列表中
- 对包含多个元素的节点的链表进行排序
- c++中从排序链表中删除重复值节点的方法
- 排序节点(链表)c++
- 使用exec对发送给子节点的随机数进行排序
- 编写和打印一个额外的0来排序文件,并从末尾删除节点(单链表)
- 二进制搜索在一个排序列表与所有节点的结构体c++