前一篇文章《整理一个双向链表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升序排序相关推荐

  1. access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法

    排序算法 回顾 我们前面已经介绍了 3 种最常见的排序算法: java 实现冒泡排序讲解 QuickSort 快速排序到底快在哪里? SelectionSort 选择排序算法详解(java 实现) 然 ...

  2. 【编程题目】输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。...

    第 14 题(数组): 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字. 要求时间复杂度是 O(n).如果有多对数字的和等于输入的数字,输出任意 ...

  3. C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果。

    /*C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果.*/#include <stdio.h> #include <conio.h& ...

  4. 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序

    /*已有a,b两个链表,每个链表中的结点包括学号.成绩.要求把两个链表合并,按学号 升序排序*/#include <stdio.h> #include <stdlib.h> t ...

  5. golang按key值进行升序排序(ksort),对字符串进行sha1哈希

    在对接PHP语言实现的签名的时候,看见对方用了ksort,由于golang里面对map的遍历是无序的,所以用golang实现了对map按key值进行升序排序: package mainimport ( ...

  6. [C语言]使用指针将输入的多个字符串按大小升序排序

    [C语言]使用指针将输入的多个字符串按大小升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按大小升序排序 要求:子函数 void StrSort(char ...

  7. [C语言]使用指针将输入的多个字符串按长度升序排序

    [C语言]使用指针将输入的多个字符串按长度升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按长度升序排序 要求:子函数 void StrSort(char ...

  8. 一维数组升序排序并输出

    要求 编写程序,输入10个整数存入一维数组,对其进行升序排序后输出. 代码 #include<stdio.h>int main(){int a[10]={0},c,i,o;for(i=0; ...

  9. 对n个整数进行升序排序

    编写函数实现对 n 个整数的由小到大的排序,n 为主函数中由键盘输入,n 个整数也由键盘输入.在主函数中输出排序后的结果.输入和输出应有相关的提示信息. #define _CRT_SECURE_NO_ ...

最新文章

  1. python是不是特别垃圾-python垃圾回收机制
  2. laravel Excel导入导出
  3. Percona XtraDB Cluster(PXC) Mysql 集群
  4. AtomicReference 原子引用
  5. 关于源文件用不同的编码方式编写,会导致执行结果不一样的现象及解决方法
  6. linux下编译webkit,Linux下编译WebKit和JSC
  7. python3中报错No module named 'numpy'
  8. weblogic安装部署
  9. Hash算法进行签名验签
  10. Codeforces--676A--Nicholas and Permutation
  11. win10同时安装wps和office时,如何设置默认应用为office!!!
  12. 国际商务谈判A卷+答案
  13. centos7查看udp端口_CentOS7查看开放端口命令及开放端口号
  14. LEARN TO DESIGN THE HEURISTICS FOR VEHICLE ROUTING PROBLEM翻译
  15. 如何部署一台云服务器并且和域名绑定
  16. 华为云郑叶来:AI炒作和投机回落,行业应用春天开始
  17. 网络编程(计算机网络相关)
  18. 【星辰傀儡线·命运环·卷二 尘埃】 7 金团
  19. nbtscan ip地址
  20. 【统计】如何理解相关系数,自相关和偏自相关函数(PACF)?

热门文章

  1. 怎么把字符串变成数组_Java中字符串split() 的使用方法,没你想的那么简单
  2. 小米获京东自营安卓平板销量冠军 小米平板5 Pro全版本闪降100元
  3. 上物理课还不够 张朝阳集结明星开启野雪挑战直播
  4. realme GT2 Pro获3C认证:65W超级快充加持
  5. 马斯克疯狂套现,特斯拉市值一周蒸发1895亿美元!网友:丝毫不影响首富位置...
  6. 字节跳动将推出汽车云业务,计划2025年追赶腾讯
  7. 一年换7家公司,95后跳槽多疯狂
  8. 外媒:苹果正研发新的Apple Watch机型 显示屏和速度将升级
  9. 诺基亚手机新品发布定档 6 月 11 日!Nokia C20 Plus 即将到来
  10. Redmi K40系统截图曝光:配备顶级2K屏幕+骁龙870移动平台