嵌入式C语言之链表冒泡排序

链表冒泡排序一是可以交换指针域的值,二是可以交换指针

typedef struct st_node{

int score;

struce st_node *next;

}Node,*LinkList;

LinkList createList(){

Node *head = (Node *)malloc(sizeof(Node));

if(NULL == head){

printf("内存分配失败!"):

return NULL;

}

head->next = NULL;

return head;

}

void sortLinklist(Linklist linklist){

// 默认当前这个链表有头节点

// 要接着排序的链表

Linklist sorted = linklist->next;

// 将原来那个链表变为空表,用来存放排序后的链表

linklist->next = NULL;

while(sorted != NULL){

Node *curr = sorted;

// 每次去排序curr就重新初始化这个prev和temp

Node *prev = linklist;

Node *temp = linklist->next;

while(temp != NULL && temp->score < curr->score){

// 原先的linklist实际是排序好的列表,一直循环到排序列表中temp的数据刚好就是插入数据的前一个

prev = temp;

temp = temp->next;

}

// 插入的新节点curr,后续指向linklist后续的节点

curr->next = temp;

prev->next = curr;

// 下次再找下一个需要排序的节点

sorted = sorted->next;

}

return;

}

为方便理解,读者可以绘制图形移动说明文本来理解算法逻辑过程

相关推荐
go_bai20 分钟前
Linux--常见工具
linux·开发语言·经验分享·笔记·vim·学习方法
ajassi200038 分钟前
开源 C# 快速开发(三)复杂控件
开发语言·开源·c#
郝学胜-神的一滴1 小时前
深入理解前端 Axios 框架:特性、使用场景与最佳实践
开发语言·前端·程序人生·软件工程
jf加菲猫1 小时前
条款11:优先选用删除函数,而非private未定义函数
开发语言·c++
歪歪1001 小时前
什么是TCP/UDP/HTTP?
开发语言·网络·网络协议·tcp/ip·http·udp
WangMing_X1 小时前
C#上位机软件:2.1 .NET项目解决方案的作用
开发语言·c#
Pocker_Spades_A1 小时前
Python快速入门专业版(四十六):Python类的方法:实例方法、类方法、静态方法与魔术方法
开发语言·python
零雲2 小时前
java面试:可以讲一讲sychronized和ReentrantLock的异同点吗
java·开发语言·面试
yubo05092 小时前
YOLO系列——实时屏幕检测
开发语言·windows·python
JasmineX-12 小时前
数据结构——静态链表(c语言笔记)
c语言·数据结构·链表