在C语言中,对带头节点的无序单链表进行排序,可以使用多种算法,如插入排序、冒泡排序或选择排序等。这里我将演示如何使用插入排序算法对单链表进行递增排序。
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data;
struct ListNode *next;
} ListNode;
// 创建一个带头节点的链表
ListNode* createList() {
ListNode *head = (ListNode*)malloc(sizeof(ListNode));
if (head == NULL) {
exit(1); // 分配内存失败,退出程序
}
head->next = NULL; // 初始化为空链表
return head;
}
// 在链表尾部插入新节点
void insertNode(ListNode *head, int value) {
ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode == NULL) {
exit(1); // 分配内存失败,退出程序
}
newNode->data = value;
newNode->next = NULL;
ListNode *current = head;
whi