上面那个问题回答的排序用while循环写
时间: 2023-09-28 20:11:09 浏览: 87
Q1045564.zip 问题回答的代码 关于单链表排序插入
如果你想使用 `while` 循环来实现链表的升序排序,可以使用插入排序的方法。以下是使用 `while` 循环实现的示例代码:
```c
void list_sort(linklist H) {
if (H == NULL || H->next == NULL) {
return;
}
linklist sortedList = NULL; // 排序后的链表头指针
linklist current = H->next; // 待排序的当前结点
while (current != NULL) {
linklist next = current->next; // 保存下一个结点
// 在已排序的链表中找到合适的位置插入当前结点
if (sortedList == NULL || current->data < sortedList->data) {
current->next = sortedList;
sortedList = current;
} else {
linklist p = sortedList;
while (p->next != NULL && p->next->data < current->data) {
p = p->next;
}
current->next = p->next;
p->next = current;
}
current = next; // 更新当前结点为下一个结点
}
H->next = sortedList; // 更新原链表头指针指向排序后的链表
}
```
你可以在调用 `list_show` 函数之前调用 `list_sort` 函数来打印出排序后的链表结点。
注意:以上代码仅为示例,可能需要根据你的实际需求进行适当修改。
阅读全文