C#雙向鏈表LinkedList排序實現(xiàn)方法
本文實例講述了C#雙向鏈表LinkedList排序實現(xiàn)方法。分享給大家供大家參考。具體如下:
1.函數(shù)
打印鏈表函數(shù)PrintLinkedList 和 排序函數(shù)SortLinkedList
注:下面代碼中的鏈表每項都是double類型,如果換做其他的類型或結構,則需要適當修改
/// <summary> /// 打印鏈表各結點信息 /// </summary> /// <param name="ll"></param> private static void PrintLinkedList(LinkedList<double> ll, string title = "") { //打印標題 Console.WriteLine(string.Format("-- {0} --", string.IsNullOrWhiteSpace(title) ? "打印鏈表" : title)); //逐個結點打印鏈表 LinkedListNode<double> lln = ll.First; int counter = 0; while (lln != null) { Console.WriteLine(string.Format("第 {0} 個結點值為 {1}", counter++, lln.Value.ToString("#0.0"))); lln = lln.Next; } } /// <summary> /// 返回一個排序后的鏈表 /// </summary> /// <param name="linkedlist">待排序鏈表</param> /// <param name="isAsc">true:升序/false:降序</param> /// <returns></returns> private static LinkedList<double> SortLinkedList( LinkedList<double> linkedlist, bool isAsc = true) { LinkedList<double> result = new LinkedList<double>(); foreach (double nodevalue in linkedlist) { LinkedListNode<double> 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函數(shù)調用
static void Main(string[] args) { //測試用數(shù)組 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<double> ll = new LinkedList<double>(); 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.運行結果:
希望本文所述對大家的C#程序設計有所幫助。
- C#實現(xiàn)的二維數(shù)組排序算法示例
- C#七大經典排序算法系列(上)
- C#實現(xiàn)冒泡排序算法的代碼示例
- C#中哈希表(HashTable)用法實例詳解(添加/移除/判斷/遍歷/排序等)
- 逐步講解快速排序算法及C#版的實現(xiàn)示例
- C#使用IComparer自定義List類實現(xiàn)排序的方法
- C#實現(xiàn)簡易猜數(shù)字游戲
- C#實現(xiàn)五子棋游戲
- C#實現(xiàn)微信跳一跳小游戲的自動跳躍助手開發(fā)實戰(zhàn)
- 詳解從零開始---用C#制作掃雷游戲
- 基于C#實現(xiàn)俄羅斯方塊游戲
- C#貪吃蛇游戲實現(xiàn)分析
- C#實現(xiàn)的24點游戲實例詳解
- C#面向對象編程之猜拳游戲實現(xiàn)方法
- C#代碼實現(xiàn)撲克牌排序的幾種方式
相關文章
使用DateTime的ParseExact方法實現(xiàn)特殊日期時間的方法詳解
本篇文章是對使用DateTime的ParseExact方法實現(xiàn)特殊日期時間的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05C#使用MiniExcel實現(xiàn)導入導出數(shù)據(jù)到Excel/CSV文件
MiniExcel是一個簡單、高效避免OOM的.NET處理Excel查、寫、填充數(shù)據(jù)的工具,這篇文章主要介紹了C#如何使用MiniExcel實現(xiàn)導入導出數(shù)據(jù)到Excel/CSV文件,需要的可以參考下2024-02-02Entity?Framework代碼優(yōu)先(Code?First)模式
這篇文章介紹了Entity?Framework代碼優(yōu)先(Code?First)模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06C#使用Win32?Api實現(xiàn)進程注入到wechat的過程
這篇文章主要介紹了C#使用Win32?Api實現(xiàn)進程注入到wechat,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09C#發(fā)送HttpPost請求來調用WebService的方法
在C#中發(fā)送HttpPost請求來調用WebService中的MyAction方法,代碼如下:需要的朋友可以參考一下2013-03-03C# Access數(shù)據(jù)庫增刪查改的簡單方法
這篇文章主要介紹了C# Access數(shù)據(jù)庫增刪查改的簡單方法,有需要的朋友可以參考一下2014-01-01