C#单向链表实现非升序插入方法:用LinkedList<int>链表类 vs 自定义单向链表类及非升序插入方法

本文主要是介绍C#单向链表实现非升序插入方法:用LinkedList<int>链表类 vs 自定义单向链表类及非升序插入方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、涉及到的知识点

1.非升序插入的定义

2. 非升序插入不是随机插入

3.AddLast 方法

二、实例

1.自定义单向链表及非升序插入方法

2.用LinkedList链表类AddLast方法实现非升序插入


一、涉及到的知识点

1.非升序插入的定义

        单向链表是一种数据结构,其中元素以线性方式连接在一起,每个元素都指向下一个元素。非升序插入意味着元素不是按升序(从小到大)插入链表中。相反,元素可以以任何顺序插入链表中,这取决于应用程序的需要。 

2. 非升序插入不是随机插入

        在 C# 单向链表中,非升序插入并不意味着随机插入它意味着根据节点数据的大小,在链表中的适当位置插入新节点,而不是简单地将其插入到链表的末尾

        当使用非升序插入时,新节点会根据其数据大小与现有节点进行比较,然后插入到链表中的正确位置。这意味着新节点的插入位置取决于其数据大小以及链表中现有节点的数据大小。

        以下是 InsertUnAscending 方法的工作原理:

  • 如果链表为空,新节点将作为链表的头节点插入。
  • 如果链表不为空,将使用一个临时节点(temp)从头节点开始遍历链表。
  • 在遍历过程中,将比较新节点的数据与当前节点(temp)的下一个节点的数据大小。如果当前节点的下一个节点的数据小于新节点的数据,将移动到下一个节点。
  • 当找到适当的位置时,将新节点插入到当前节点(temp)的下一个节点之前,然后将新节点的下一个节点设置为当前节点的下一个节点的下一个节点。
  • 最后,将当前节点(temp)的下一个节点设置为新节点。

        这种方法确保了链表中的节点数据保持非升序排列。

3.AddLast 方法

        AddLast 方法是 C# 中 LinkedList<T> 类的一个方法,用于在链表的末尾添加一个元素。当想要将元素按任意顺序添加到链表中时,可以使用此方法。

        以下是 AddLast 方法的语法:

public void AddLast(T value);

        其中,T 是类型参数,表示链表中元素的类型。

二、实例

1.自定义单向链表及非升序插入方法

// 单向链表实现:非升序插入数据的方法
namespace _131_7
{public class Node{public int Data { get; set; }public Node? Next { get; set; }}public class LinkedList{private static Node? _head;public LinkedList(){_head = null;}/// <summary>/// 非升序插入节点数据的方法/// 非升序插入意味着元素不是按升序插入链表中/// 相反,元素可以以任何顺序插入链表中/// 具体实现是由程序的需求决定的/// </summary>public static void AddNonAscending(int data){Node newNode = new() { Data = data };if (_head == null){_head = newNode;}else{Node? temp = _head;while (temp.Next != null && temp.Next.Data < data){temp = temp.Next;}newNode.Next = temp.Next;temp.Next = newNode;}}// 遍历链表并打印数据public static void PrintList(){Node? temp = _head;while (temp != null){Console.Write(temp.Data + " ");temp = temp.Next;}Console.WriteLine();}}class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 插入元素,顺序不是升序LinkedList.AddNonAscending(11);LinkedList.AddNonAscending(5);LinkedList.AddNonAscending(3);LinkedList.AddNonAscending(4);LinkedList.AddNonAscending(2);LinkedList.AddNonAscending(1);// 遍历链表并打印元素LinkedList.PrintList();}}
}
//运行结果:
/*
11 1 2 3 4 5*/

2.用LinkedList<int>链表类AddLast方法实现非升序插入

// 用LinkedList<int>链表类AddLast方法实现非升序插入
namespace _131_8
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);LinkedList<int>? list = new();// 插入元素,顺序不是升序list.AddLast(5);list.AddLast(3);list.AddLast(1);list.AddLast(4);list.AddLast(2);// 遍历链表并打印元素LinkedListNode<int>? node = list.First;while (node != null){Console.WriteLine(node.Value);node = node.Next;}}}
}
//运行结果:
/*
5
3
1
4
2*/

         从上面的示例中可以看到,元素不是按升序插入链表的。

这篇关于C#单向链表实现非升序插入方法:用LinkedList<int>链表类 vs 自定义单向链表类及非升序插入方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761480

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景