C#雙向鏈表LinkedList排序?qū)崿F(xiàn)方法
本文實例講述了C#雙向鏈表LinkedList排序?qū)崿F(xiàn)方法。分享給大家供大家參考。具體如下:
1.函數(shù)
打印鏈表函數(shù)PrintLinkedList 和 排序函數(shù)SortLinkedList
注:下面代碼中的鏈表每項都是double類型,如果換做其他的類型或結(jié)構(gòu),則需要適當修改
/// <summary>
/// 打印鏈表各結(jié)點信息
/// </summary>
/// <param name="ll"></param>
private static void PrintLinkedList(LinkedList<double> ll, string title = "")
{
//打印標題
Console.WriteLine(string.Format("-- {0} --",
string.IsNullOrWhiteSpace(title) ? "打印鏈表" : title));
//逐個結(jié)點打印鏈表
LinkedListNode<double> lln = ll.First;
int counter = 0;
while (lln != null)
{
Console.WriteLine(string.Format("第 {0} 個結(jié)點值為 {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ù)調(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進行排序(升序)
ll = SortLinkedList(ll);
//打印排序后的鏈表ll
PrintLinkedList(ll, "鏈表(升序)");
//對鏈表ll進行排序(降序)
ll = SortLinkedList(ll, false);
//打印排序后的鏈表ll
PrintLinkedList(ll, "鏈表(降序)");
Console.ReadLine();
}
3.運行結(jié)果:

希望本文所述對大家的C#程序設(shè)計有所幫助。
- C#實現(xiàn)的二維數(shù)組排序算法示例
- C#七大經(jīng)典排序算法系列(上)
- 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#貪吃蛇游戲?qū)崿F(xiàn)分析
- C#實現(xiàn)的24點游戲?qū)嵗斀?/a>
- C#面向?qū)ο缶幊讨氯螒驅(qū)崿F(xiàn)方法
- C#代碼實現(xiàn)撲克牌排序的幾種方式
相關(guān)文章
使用DateTime的ParseExact方法實現(xiàn)特殊日期時間的方法詳解
本篇文章是對使用DateTime的ParseExact方法實現(xiàn)特殊日期時間的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05
C#使用MiniExcel實現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件
MiniExcel是一個簡單、高效避免OOM的.NET處理Excel查、寫、填充數(shù)據(jù)的工具,這篇文章主要介紹了C#如何使用MiniExcel實現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件,需要的可以參考下2024-02-02
Entity?Framework代碼優(yōu)先(Code?First)模式
這篇文章介紹了Entity?Framework代碼優(yōu)先(Code?First)模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
C#使用Win32?Api實現(xiàn)進程注入到wechat的過程
這篇文章主要介紹了C#使用Win32?Api實現(xiàn)進程注入到wechat,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
C#發(fā)送HttpPost請求來調(diào)用WebService的方法
在C#中發(fā)送HttpPost請求來調(diào)用WebService中的MyAction方法,代碼如下:需要的朋友可以參考一下2013-03-03
C# Access數(shù)據(jù)庫增刪查改的簡單方法
這篇文章主要介紹了C# Access數(shù)據(jù)庫增刪查改的簡單方法,有需要的朋友可以參考一下2014-01-01

