C#雙向鏈表LinkedList排序?qū)崿F(xiàn)方法
本文實(shí)例講述了C#雙向鏈表LinkedList排序?qū)崿F(xiàn)方法。分享給大家供大家參考。具體如下:
1.函數(shù)
打印鏈表函數(shù)PrintLinkedList 和 排序函數(shù)SortLinkedList
注:下面代碼中的鏈表每項(xiàng)都是double類型,如果換做其他的類型或結(jié)構(gòu),則需要適當(dāng)修改
/// <summary> /// 打印鏈表各結(jié)點(diǎn)信息 /// </summary> /// <param name="ll"></param> private static void PrintLinkedList(LinkedList<double> ll, string title = "") { //打印標(biāo)題 Console.WriteLine(string.Format("-- {0} --", string.IsNullOrWhiteSpace(title) ? "打印鏈表" : title)); //逐個(gè)結(jié)點(diǎn)打印鏈表 LinkedListNode<double> lln = ll.First; int counter = 0; while (lln != null) { Console.WriteLine(string.Format("第 {0} 個(gè)結(jié)點(diǎn)值為 {1}", counter++, lln.Value.ToString("#0.0"))); lln = lln.Next; } } /// <summary> /// 返回一個(gè)排序后的鏈表 /// </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) //升序排列時(shí)情況 { if (lln == null) { result.AddLast(nodevalue); break; } else if (nodevalue <= lln.Value) { result.AddBefore(lln, nodevalue); break; } else { lln = lln.Next; } } else //降序排列時(shí)情況 { 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ù)調(diào)用
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進(jìn)行排序(升序) ll = SortLinkedList(ll); //打印排序后的鏈表ll PrintLinkedList(ll, "鏈表(升序)"); //對鏈表ll進(jìn)行排序(降序) ll = SortLinkedList(ll, false); //打印排序后的鏈表ll PrintLinkedList(ll, "鏈表(降序)"); Console.ReadLine(); }
3.運(yùn)行結(jié)果:
希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。
- C#實(shí)現(xiàn)的二維數(shù)組排序算法示例
- C#七大經(jīng)典排序算法系列(上)
- C#實(shí)現(xiàn)冒泡排序算法的代碼示例
- C#中哈希表(HashTable)用法實(shí)例詳解(添加/移除/判斷/遍歷/排序等)
- 逐步講解快速排序算法及C#版的實(shí)現(xiàn)示例
- C#使用IComparer自定義List類實(shí)現(xiàn)排序的方法
- C#實(shí)現(xiàn)簡易猜數(shù)字游戲
- C#實(shí)現(xiàn)五子棋游戲
- C#實(shí)現(xiàn)微信跳一跳小游戲的自動(dòng)跳躍助手開發(fā)實(shí)戰(zhàn)
- 詳解從零開始---用C#制作掃雷游戲
- 基于C#實(shí)現(xiàn)俄羅斯方塊游戲
- C#貪吃蛇游戲?qū)崿F(xiàn)分析
- C#實(shí)現(xiàn)的24點(diǎn)游戲?qū)嵗斀?/a>
- C#面向?qū)ο缶幊讨氯螒驅(qū)崿F(xiàn)方法
- C#代碼實(shí)現(xiàn)撲克牌排序的幾種方式
相關(guān)文章
使用DateTime的ParseExact方法實(shí)現(xiàn)特殊日期時(shí)間的方法詳解
本篇文章是對使用DateTime的ParseExact方法實(shí)現(xiàn)特殊日期時(shí)間的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件
MiniExcel是一個(gè)簡單、高效避免OOM的.NET處理Excel查、寫、填充數(shù)據(jù)的工具,這篇文章主要介紹了C#如何使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件,需要的可以參考下2024-02-02HTML文本框的值改變后觸發(fā)后臺(tái)代碼的方法
asp.net用日期插件,當(dāng)選中一個(gè)日期時(shí)觸發(fā)一個(gè)事件,以查詢當(dāng)前日期的數(shù)據(jù)。這是要跟數(shù)據(jù)庫交互的。先貼出控件代碼:2013-04-04C# 泛型數(shù)組學(xué)習(xí)小結(jié)
C# 泛型數(shù)組學(xué)習(xí)中我們需要注意什么事項(xiàng)呢?C# 泛型數(shù)組的使用又是如何呢?那么本文就向你詳細(xì)介紹這方面的內(nèi)容2012-09-09Entity?Framework代碼優(yōu)先(Code?First)模式
這篇文章介紹了Entity?Framework代碼優(yōu)先(Code?First)模式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C#使用Win32?Api實(shí)現(xiàn)進(jìn)程注入到wechat的過程
這篇文章主要介紹了C#使用Win32?Api實(shí)現(xiàn)進(jìn)程注入到wechat,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09C#發(fā)送HttpPost請求來調(diào)用WebService的方法
在C#中發(fā)送HttpPost請求來調(diào)用WebService中的MyAction方法,代碼如下:需要的朋友可以參考一下2013-03-03C# Access數(shù)據(jù)庫增刪查改的簡單方法
這篇文章主要介紹了C# Access數(shù)據(jù)庫增刪查改的簡單方法,有需要的朋友可以參考一下2014-01-01