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

}

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

相关推荐
祈安_1 天前
C语言内存函数
c语言·后端
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1233 天前
matlab画图工具
开发语言·matlab
dustcell.3 天前
haproxy七层代理
java·开发语言·前端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone3 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ4022054963 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
czy87874753 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
遥遥江上月3 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_531237173 天前
C语言-数组练习进阶
c语言·开发语言·算法