请用C语言编程实现以下功能: 一个含有整数型元素的节点链表,任意插入链表节点数据,打印出该链表节点成员数据;然后使用冒泡排序法将链表数据从小到大排序输出
时间: 2024-10-29 17:13:20 浏览: 29
在C语言中,我们可以使用结构体定义链表节点,并提供插入和排序的功能。首先,我们定义一个包含整数和指向下一个节点指针的链表节点结构:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点并插入数据
Node* insert(Node* head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
return head;
}
// 打印链表节点数据
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
// 冒泡排序链表节点数据
void bubbleSortList(Node** head) {
if (*head == NULL || (*head)->next == NULL) {
return;
}
Node* end = *head;
for (int passes = 0; passes < end->next != NULL; passes++) {
Node* current = *head;
Node* temp = NULL;
while (current->next != NULL) {
if (current->data > current->next->data) {
temp = current->data;
current->data = current->next->data;
current->next->data = temp;
}
current = current->next;
}
// 将已排序部分的末尾移到原链表末尾
if (temp != NULL) {
*end = current;
end = current;
}
}
}
int main() {
Node* head = NULL;
// 插入节点
head = insert(head, 5);
head = insert(head, 2);
head = insert(head, 8);
head = insert(head, 1);
// 打印原始链表
printf("Original List:\n");
printList(head);
// 对链表排序
bubbleSortList(&head);
// 打印排序后的链表
printf("Sorted List:\n");
printList(head);
return 0;
}
```
在这个程序中,`insert`函数用于添加节点,`printList`用于打印节点数据,`bubbleSortList`则实现了冒泡排序算法对链表数据进行排序。运行`main`函数即可看到结果。
阅读全文