C#双向链表实现:在当前节点后插入新数据的方法Insert()

目录

1.定义一个泛型节点类并自动属性

2.定义链表类,并实现Append、Print、MoveFirst、 Insert

3.Main方法


1.定义一个泛型节点类并自动属性

/// <summary>
/// 定义泛型节点类
/// </summary>
/// <typeparam name="T">泛型运算符</typeparam>
/// <param name="value">泛型参数</param>
public class ListNode<T>(T value)
{public T Object { get; set; } = value;public ListNode<T>? Next { get; set; }public ListNode<T>? Previous { get; set; }
}

2.定义链表类,并实现Append、Print、MoveFirst、 Insert

/// <summary>
/// 定义链表类
/// </summary>
public class LinkedList
{private ListNode<int>? _head;private ListNode<int>? _tail;private ListNode<int>? _current;public ListNode<int>? Current { get => _current; set => _current = value; }/// <summary>/// 追加节点到Append方法/// </summary>/// <param name="value"></param>public void Append(int value){var newNode = new ListNode<int>(value);if (_head == null){_head = newNode;_tail = newNode;}else{_tail!.Next = newNode;newNode.Previous = _tail;_tail = newNode;}}/// <summary>/// 输出各节点/// </summary>public void Print(){var current = _head;while (current != null){Console.WriteLine(current.Object);current = current.Next;}}/// <summary>///移动指针到链表头/// </summary>public void MoveFirst(){if (_head != null){_current = _head;}}/// <summary>/// 在当前节点后面插入新数据/// </summary>/// <param name="value">待插入的数据</param>public void Insert(int value){// 创建一个新的节点var newNode = new ListNode<int>(value);// 如果链表为空,将新节点设置为头节点if (_head == null){_head = newNode;_current = newNode;return;}// 找到当前节点var current = _current;if (current == null){//current = _head;_current = _head;while (_current.Next != null){_current = _current.Next;}current = _current;}// 在当前位置插入新节点newNode.Next = current.Next;newNode.Previous = current;current.Next = newNode;_current = newNode;}

3.Main方法

 class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);var linkedList = new LinkedList();linkedList.Append(5);linkedList.Append(2);linkedList.Append(8);linkedList.Append(1);linkedList.Print();Console.WriteLine("*初始化数据*");linkedList.MoveFirst();linkedList.Insert(3);linkedList.Print();Console.WriteLine("*头结点后插入3*");}}

         运行结果:

//运行结果:
/*
5
2
8
1
*初始化数据*
5
3
2
8
1
*头结点后插入3**/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地navicate连接vm虚拟机中的mysql5.7docker容器

一&#xff0c;配置 前提是我已经启动的mysql5.7容器 使用 docker ps -a 查看所有的容器 使用 docker exec -it c4f9 bash 进入mysql命令行&#xff0c;注意这个c4f9是容器唯一id&#xff0c;不用写全连接mysql mysql -uroot -p123456&#xff0c;连接成功后 输入 show datab…

蓝桥杯——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和&#xff0c;但是这里的l和r的范围为1e12&#xff0c;明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点&#xff0c;可以按照等差数列对序列进行分块。如上图&#xff0c;在求前10个…

LDA(Latent Dirichlet Allocation,隐含狄利克雷分布)模型简单使用

LDA&#xff08;Latent Dirichlet Allocation&#xff0c;隐含狄利克雷分布&#xff09;模型 机器学习高级算法中LDA算法有线性判别分析&#xff08;Linear Discriminant Analysis&#xff0c;LDA&#xff09;和隐含狄利克雷分布&#xff08;Latent Dirichlet Allocation&…

Android的多线程和异步处理

在Android开发中&#xff0c;多线程和异步处理是处理耗时操作、提高应用响应性和性能的关键技术。以下是一些关于Android多线程和异步处理的基本概念和实践&#xff1a; 1. **主线程&#xff08;UI线程&#xff09;**&#xff1a; - Android应用的主线程负责处理UI操作和事…

AI大预言模型——ChatGPT科研与AI绘图及论文高效写作教程

原文链接&#xff1a;AI大预言模型——ChatGPT科研与AI绘图及论文高效写作教程 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

当代体育科技期刊投稿邮箱

《当代体育科技》杂志是由国家新闻出版总署批准的正规体育类学术期刊&#xff0c;刊登国内外体育科技领域的新技术、新成果&#xff0c;介绍体育运动项目新的训练方法、动态和发展趋势&#xff0c;宣传科学技术在体育行业中的应用&#xff0c;促进我国体育科技事业的发展。适用…

【笔记版】docker常用指令---systemctl类、docker状态

systemctl [options] docker 启动&#xff1a;system start docker查看状态&#xff1a;systemctl status docker停止&#xff1a;systemctl stop docker有警告&#xff1a;service关闭了&#xff0c;但是docker.socket仍响应解决方法&#xff1a;systemctl stop docker.socket…

springboot2入门到实战-数据库缓存同步框架canal

canal框架 canal [kə’nl]&#xff0c;译意为水道/管道/沟渠&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署&#xff0c;存在跨机房同步的业务需求&#xff0c;实现方式主要是基于业务 trig…

文章汇总(专题整理、面试总结、自学教程)

这么多年的程序员职业生涯中&#xff0c;都没有好好整理所知所会的知识&#xff0c;老是时间一长会忘记。在这里做一个总结&#xff0c;也当是自己的复盘。 面试题整理&#xff1a; 内容链接Java基础面试题Java 基础面试题-CSDN博客集合&#xff08;hashMap&#xff09;。。。…

【sgCollapseBtn】自定义组件:底部折叠/展开按钮

特性&#xff1a; 支持自定义折叠状态支持自定义标签名称 sgCollapseBtn源码 <template><div :class"$options.name" click"show !show" :placement"placement"><div class"collapse-btns"><div class"c…

嵌入式中volatile关键字的使用方法

Hi,大家好&#xff01; 今天我们来学习一下volatile关键字&#xff0c;volatile关键字想必大家在平时编程中都见过或用过。可是小伙伴们有没有想过什么时候需要使用volatile关键字吗&#xff1f; 在C语言中&#xff0c;volatile是一个关键字&#xff0c;用于告诉编译器不要优化…

Java 打包 SpringBoot 项目报错

Java 打包 SpringBoot 项目报错 问题重现 Please refer to xxxx for the individual test results. Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream. 解决问题 在 pom.xml 的 <properties> 中添加项目代码 <s…

MySQL-- 优化(慢查询)

MySQL–优化&#xff08;慢查询&#xff09; 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、如何定位慢查询&#xff1f; 定位慢查询是数据库性能优化的关键步骤之一。当数据库执行某些查询时&#xff0c;如…

QUIC来了!

什么是QUIC QUIC&#xff0c;快速UDP网络连接(Quick UDP Internet Connection)的简称&#xff0c;即RFC文档描述它为一个面向连接的安全通用传输协议。其基于UDP协议实现了可靠传输及拥塞控制&#xff0c;简单来说&#xff0c;QUIC TCP TLS。 为什么有了QUIC HTTP2.0为了为了…

知识图谱(Knowledge Graph)

知识图谱&#xff08;Knowledge Graph&#xff09;是一种图结构化的信息表达方式&#xff0c;旨在将丰富多样的知识、概念和实体之间的复杂关系以图形式表示&#xff0c;以便计算机系统能够理解和推理这些信息。知识图谱是人工智能和语义网技术领域的重要应用&#xff0c;通过构…

2193. 分配问题(网络流,费用流,二分图最优匹配)

活动 - AcWing 有 n 件工作要分配给 n 个人做。 第 i 个人做第 j 件工作产生的效益为 cij。 试设计一个将 n 件工作分配给 n 个人做的分配方案。 对于给定的 n 件工作和 n 个人&#xff0c;计算最优分配方案和最差分配方案。 输入格式 第 1 行有 1 个正整数 n&#xff0c…

2023年计算机视觉技术进展概览

2023年计算机视觉技术进展概览 在2023年&#xff0c;计算机视觉领域出现了多个标志性的进步。以下是十大突破性进展的简要概述&#xff1a; SAM (Segment Anything Model)&#xff1a;由Meta AI开发的SAM成为了分割任务的基础模型&#xff0c;它改革了像素级分类&#xff0c;可…

JavaScript:require 和 import

文章目录 require()起源&#xff1a;语法&#xff1a;使用场景&#xff1a;加载时机&#xff1a;示例 import起源语法使用场景加载时机异步加载示例 require 和 import 是 JavaScript 中用于模块导入的不同语法&#xff0c;它们遵循不同的模块规范 require() 起源&#xff1a;…

MySQL 的备份方式

MySQL 的备份方式 1. 逻辑备份 逻辑备份是指将数据库中的数据导出为可读的 SQL 语句&#xff0c;通过这些语句可以还原数据库的结构和数据。 使用 mysqldump 工具进行逻辑备份 - **命令示例&#xff1a;**mysqldump -u [username] -p [database_name] > backup_file.sql- …

文档书写规范

1.文档名称&#xff1a;时间-发生地-文档内容高度概括 2.内容定性很重要&#xff0c;可以根据现象来阐述问题&#xff0c;少加主管判断容易出错 3.一个大标题就是一页开头 4.每个标题最好统一字数&#xff1a;四字方便记忆&#xff08;专业感&#xff09; 5.设置页数&#…