C#双向链表LinkedList排序实现方法

作者:北风其凉 时间:2021-08-19 14:06:16 

本文实例讲述了C#双向链表LinkedList排序实现方法。分享给大家供大家参考。具体如下:

1.函数

打印链表函数PrintLinkedList 和 排序函数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函数调用


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<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#双向链表LinkedList排序实现方法

希望本文所述对大家的C#程序设计有所帮助。

标签:C#,双向链表,排序
0
投稿

猜你喜欢

  • 详解Android 通过Socket 和服务器通讯(附demo)

    2023-05-03 01:08:22
  • java实现学生信息管理系统

    2023-11-11 08:22:35
  • Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例

    2021-07-19 04:41:18
  • 基于Class.forName()用法及说明

    2021-06-20 19:09:30
  • C#中实现可变参数实例

    2022-03-27 15:48:07
  • Java实现十进制与二进制互转的示例详解

    2022-04-02 07:40:56
  • java 文件下载支持中文名称的实例

    2023-03-16 09:02:16
  • Java实现数据库连接池的方法

    2023-11-28 08:57:30
  • SpringBoot整合Mybatis简单实现增删改查

    2023-07-05 15:33:44
  • 全面解析JTA 深度历险

    2022-04-17 10:58:43
  • Android Selector和Shape的使用方法

    2022-08-05 23:48:38
  • Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作

    2022-04-05 20:07:11
  • Java提取2个集合中的相同和不同元素代码示例

    2023-11-28 05:48:41
  • java Apache poi 对word doc文件进行读写操作

    2023-09-23 02:13:15
  • Android开发之多媒体文件获取工具类实例【音频,视频,图片等】

    2022-03-05 22:44:24
  • 关于@ApiImplicitParams、ApiImplicitParam的使用说明

    2023-11-09 10:49:34
  • java如何使用自己的maven本地仓库详解

    2022-08-01 12:13:44
  • 基于Rxjava实现轮询定时器

    2021-12-27 07:22:10
  • Android开发中编写蓝牙相关功能的核心代码讲解

    2021-07-26 00:24:53
  • java中synchronized(同步代码块和同步方法)详解及区别

    2021-09-03 08:44:05
  • asp之家 软件编程 m.aspxhome.com