双向链表list.h升序排序
前一篇文章《整理一个双向链表list.h》介绍了自实现的双向链表list.h,在Linux内核中,常见的是维护全局链表(如i2c板级有一个全局链表),基本上都是在尾部插入、模块退出时删除,不会涉及到链表中间插入、删除,——这也让我一度认为该链表的实现只具备这些“少许”功能。当然,如果抛开内核场合,其它场合可能会需要到更多的功能,所以前文中做了介绍。这里就说一下如何将链表做成升序(或降序)排列的。
代码片段如下:
// 按顺序添加到链表中
LIST_HEAD(list_misc3_head);
void list_misc3_add(struct i2c_devinfo* devinfo)
{struct i2c_devinfo* tdev;list_for_each(tdev, &list_misc3_head, struct i2c_devinfo, list){if (devinfo->busnum < tdev->busnum) // 升序 如果为“>”则是降序{// 使用的是prev,因为遍历到tdev节点时,比其小的,要插到前面,而不是后面,同理,降序亦是prevlist_add_prev(&devinfo->list, &tdev->list); return;}}// 如果不符合条件,或链表为空,则达到此处list_add_tail(&devinfo->list, &list_misc3_head);
}#include <time.h>
#include <unistd.h>
void list_misc3(void)
{struct i2c_devinfo* devinfo;for (int i = 0; i < 5; i++){// 分配空间devinfo = (struct i2c_devinfo*)malloc(sizeof(struct i2c_devinfo));if (devinfo == NULL) return;srand(time(NULL));sleep(1); // 为了让随机数变化,延时1秒,否则得到的随机数都是一样的// 赋值devinfo->busnum = rand() % 100;devinfo->slave = i+100;// 添加到链接中list_misc3_add(devinfo);//list_add_tail(&devinfo->list, &list_misc3_head);}// 显示show(&list_misc3_head);delete_list(&list_misc3_head);
}
代码简单并有解释,就不多说了。
2016.10.20 周四 中午休息 前
双向链表list.h升序排序相关推荐
- access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法
排序算法 回顾 我们前面已经介绍了 3 种最常见的排序算法: java 实现冒泡排序讲解 QuickSort 快速排序到底快在哪里? SelectionSort 选择排序算法详解(java 实现) 然 ...
- 【编程题目】输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。...
第 14 题(数组): 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字. 要求时间复杂度是 O(n).如果有多对数字的和等于输入的数字,输出任意 ...
- C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果。
/*C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果.*/#include <stdio.h> #include <conio.h& ...
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序
/*已有a,b两个链表,每个链表中的结点包括学号.成绩.要求把两个链表合并,按学号 升序排序*/#include <stdio.h> #include <stdlib.h> t ...
- golang按key值进行升序排序(ksort),对字符串进行sha1哈希
在对接PHP语言实现的签名的时候,看见对方用了ksort,由于golang里面对map的遍历是无序的,所以用golang实现了对map按key值进行升序排序: package mainimport ( ...
- [C语言]使用指针将输入的多个字符串按大小升序排序
[C语言]使用指针将输入的多个字符串按大小升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按大小升序排序 要求:子函数 void StrSort(char ...
- [C语言]使用指针将输入的多个字符串按长度升序排序
[C语言]使用指针将输入的多个字符串按长度升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按长度升序排序 要求:子函数 void StrSort(char ...
- 一维数组升序排序并输出
要求 编写程序,输入10个整数存入一维数组,对其进行升序排序后输出. 代码 #include<stdio.h>int main(){int a[10]={0},c,i,o;for(i=0; ...
- 对n个整数进行升序排序
编写函数实现对 n 个整数的由小到大的排序,n 为主函数中由键盘输入,n 个整数也由键盘输入.在主函数中输出排序后的结果.输入和输出应有相关的提示信息. #define _CRT_SECURE_NO_ ...
最新文章
- python是不是特别垃圾-python垃圾回收机制
- laravel Excel导入导出
- Percona XtraDB Cluster(PXC) Mysql 集群
- AtomicReference 原子引用
- 关于源文件用不同的编码方式编写,会导致执行结果不一样的现象及解决方法
- linux下编译webkit,Linux下编译WebKit和JSC
- python3中报错No module named 'numpy'
- weblogic安装部署
- Hash算法进行签名验签
- Codeforces--676A--Nicholas and Permutation
- win10同时安装wps和office时,如何设置默认应用为office!!!
- 国际商务谈判A卷+答案
- centos7查看udp端口_CentOS7查看开放端口命令及开放端口号
- LEARN TO DESIGN THE HEURISTICS FOR VEHICLE ROUTING PROBLEM翻译
- 如何部署一台云服务器并且和域名绑定
- 华为云郑叶来:AI炒作和投机回落,行业应用春天开始
- 网络编程(计算机网络相关)
- 【星辰傀儡线·命运环·卷二 尘埃】 7 金团
- nbtscan ip地址
- 【统计】如何理解相关系数,自相关和偏自相关函数(PACF)?
热门文章
- 怎么把字符串变成数组_Java中字符串split() 的使用方法,没你想的那么简单
- 小米获京东自营安卓平板销量冠军 小米平板5 Pro全版本闪降100元
- 上物理课还不够 张朝阳集结明星开启野雪挑战直播
- realme GT2 Pro获3C认证:65W超级快充加持
- 马斯克疯狂套现,特斯拉市值一周蒸发1895亿美元!网友:丝毫不影响首富位置...
- 字节跳动将推出汽车云业务,计划2025年追赶腾讯
- 一年换7家公司,95后跳槽多疯狂
- 外媒:苹果正研发新的Apple Watch机型 显示屏和速度将升级
- 诺基亚手机新品发布定档 6 月 11 日!Nokia C20 Plus 即将到来
- Redmi K40系统截图曝光:配备顶级2K屏幕+骁龙870移动平台