博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 双向链表LinkedList的排序
阅读量:6272 次
发布时间:2019-06-22

本文共 1981 字,大约阅读时间需要 6 分钟。

hot3.png

1.函数

打印链表函数PrintLinkedList 和 排序函数SortLinkedList

注:下面代码中的链表每项都是double类型,如果换做其他的类型或结构,则需要适当修改

/// /// 打印链表各结点信息/// /// private static void PrintLinkedList(LinkedList
ll, string title = ""){ //打印标题 Console.WriteLine(string.Format("-- {0} --", string.IsNullOrWhiteSpace(title) ? "打印链表" : title)); //逐个结点打印链表 LinkedListNode
lln = ll.First; int counter = 0; while (lln != null) { Console.WriteLine(string.Format("第 {0} 个结点值为 {1}", counter++, lln.Value.ToString("#0.0"))); lln = lln.Next; }}///
/// 返回一个排序后的链表/// ///
待排序链表///
true:升序/false:降序///
private static LinkedList
SortLinkedList( LinkedList
linkedlist, bool isAsc = true){ LinkedList
result = new LinkedList
(); foreach (double nodevalue in linkedlist) { LinkedListNode
lln = result.First; while (true) { if (isAsc) //升序排列时情况 { if (lln == null) { result.AddLast(nodevalue); break; } else if (nodevalue <= lln.Value) { result.AddBefore(lln, nodevalue); break; } else { lln = lln.Next; } } else //降序排列时情况 { if (lln == null) { result.AddLast(nodevalue); break; } else if (nodevalue >= lln.Value) { result.AddBefore(lln, nodevalue); break; } else { lln = lln.Next; } } } } return result;}

2.Main函数调用

static void Main(string[] args){    //测试用数组    double[] array = new double[]     {        3.5, 2.5, 6.2, 8.0, 1.3,         4.6, 5.5, 2.7, 8.4, 9.7    };    //生成链表ll    LinkedList
ll = new LinkedList
(); for (int i = 1; i < array.Length; i++) { ll.AddLast(array[i]); } //打印链表ll PrintLinkedList(ll, "原链表"); //对链表ll进行排序(升序) ll = SortLinkedList(ll); //打印排序后的链表ll PrintLinkedList(ll, "链表(升序)"); //对链表ll进行排序(降序) ll = SortLinkedList(ll, false); //打印排序后的链表ll PrintLinkedList(ll, "链表(降序)"); Console.ReadLine();}

3.运行结果

000057_ouJI_1425762.png

转载于:https://my.oschina.net/Tsybius2014/blog/227365

你可能感兴趣的文章
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>
服务器错误码
查看>>
javascript中的面向对象
查看>>
Splunk作为日志分析平台与Ossec进行联动
查看>>
yaffs文件系统
查看>>
Mysql存储过程
查看>>
NC营改增
查看>>
Lua
查看>>
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
查看>>
postgresql 获取刚刚插入的数据主键id
查看>>
C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]
查看>>
05-Vue入门系列之Vue实例详解与生命周期
查看>>
验证码展示
查看>>
浅谈大型web系统架构
查看>>
淘宝大秒系统设计详解
查看>>
linux如何修改登录用户密码
查看>>