嵌入式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;

}

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

相关推荐
通往曙光的路上4 小时前
JAVA 十二幕啦啦啦啦啦啦啦啊啦啦啦啦a
java·开发语言·算法
芜青4 小时前
JavaScript手录进阶01-跨域问题
开发语言·javascript·ajax·ecmascript
focksorCr4 小时前
C 内存对齐踩坑记录
linux·c语言·gnu
珹洺4 小时前
C++从入门到实战(二十一)List迭代器实现
开发语言·c++·list
j_xxx404_4 小时前
数据结构:栈和队列(上)
c语言·数据结构·算法·leetcode
青鱼入云5 小时前
java面试中经常会问到的多线程问题有哪些(基础版)
java·开发语言·面试
Niuguangshuo5 小时前
Python绘图动态可视化:实时音频流
开发语言·python·音视频
0wioiw05 小时前
Python基础(⑦魔法方法)
开发语言·python
EthanChou20205 小时前
rust学习之开发环境
开发语言·学习·rust