链表冒泡排序c语言 增序
时间: 2024-03-28 14:34:59 浏览: 16
链表冒泡排序是一种常见的排序算法,用于对链表中的元素进行排序。下面是链表冒泡排序的C语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct ListNode {
int val;
struct ListNode *next;
};
// 链表冒泡排序函数
struct ListNode* bubbleSort(struct ListNode* head) {
if (head == NULL || head->next == NULL) {
return head;
}
struct ListNode* p, *q, *end;
end = NULL;
while (head->next end) {
p = head;
q = p->next;
while (q != end) {
if (p->val > q->val) {
int temp = p->val;
p->val = q->val;
q->val = temp;
}
p = p->next;
q = q->next;
}
end = p; // 更新end节点
}
return head;
}
// 创建链表节点函数
struct ListNode* createNode(int val) {
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = val;
newNode->next = NULL;
return newNode;
}
// 打印链表函数
void printList(struct ListNode* head) {
struct ListNode* p = head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main() {
// 创建链表
struct ListNode* head = createNode(4);
head->next = createNode(2);
head->next->next = createNode(1);
head->next->next->next = createNode(3);
printf("排序前的链表:");
printList(head);
// 对链表进行冒泡排序
head = bubbleSort(head);
printf("排序后的链表:");
printList(head);
return 0;
}
```