C语言单链表集合排序代码
时间: 2024-10-12 10:15:07 浏览: 32
在C语言中,对单链表进行排序通常需要选择合适的算法。一种常见的方法是使用插入排序,由于链表的特点,我们可以遍历链表并将元素逐个插入已排序的部分。这里是一个简单的插入排序示例,假设链表节点结构如下:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
插入排序函数代码:
```c
void insertionSortLinkedList(Node** head) {
if (*head == NULL || (*head)->next == NULL) {
return; // 如果链表为空或只有一个元素,无需排序
}
Node* sorted = *head;
Node* current = sorted->next;
while (current != NULL) {
Node* temp = current->next;
if (sorted->data > current->data) {
sorted->next = current->next;
current->next = temp;
temp = sorted;
sorted = current;
}
current = temp;
}
*head = sorted; // 更新头指针指向已排序部分
}
```
这个函数会保持链表的顺序,并在原有的基础上按升序排列。
阅读全文