C#双向链表实现:Append()方法追加并显示数据

目录

一、涉及到的知识点

1.定义

2.双向链表与单向链表的区别

二、实例


一、涉及到的知识点

1.定义

        在双向链表中,每个节点有两个指针域,一个指向它的前一个节点(即直接前驱),另一个指向它的后一个节点(即直接后继)。这种设计使得双向链表可以进行双向遍历,即可以从头节点开始向前遍历,也可以从尾节点开始向后遍历。

        双向链表的节点结构通常如下所示:

struct Node
{// 数据域int data;// 指向直接前驱的指针Node* prev;// 指向直接后继的指针Node* next;
};

2.双向链表与单向链表的区别

        双向链表的算法描述和单向链表基本相同,但是双向链表在删除和插入节点时与单向链表有很大的不同:双向链表在删除节点时,不但要修改节点的直接后继指针,还要同时修改节点的直接前驱指针。在插入时更是要修改插入节点的前驱和后继的两个方向上的指针。

二、实例

        在实例的双向链表类中,设计一个Append方法向链表的末尾追加初始数据5,2,8,1。然后用Print方法显示链表数据。

// 双向链表实现:Append方法、Print方法namespace _132_1
{public class Objects(int num, string name, int count){public int Num { get; set; } = num;public string Name { get; set; } = name;public int Count { get; set; } = count;}public class ListNode(Objects obj){public Objects Object { get; set; } = obj;public ListNode? Next { get; set; } = null;}public class LinkedList{private ListNode? _head;private ListNode? _tail;public void Append(Objects obj){ListNode newNode = new(obj);if (_head == null){_head = newNode;_tail = newNode;}else{_tail!.Next = newNode;_tail = newNode;}}public void Print(){ListNode? current = _head;while (current != null){Console.WriteLine(current.Object.Num);current = current.Next;}}}public class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);LinkedList linkedList = new();linkedList.Append(new Objects(5, "Five", 1));linkedList.Append(new Objects(2, "Two", 2));linkedList.Append(new Objects(8, "Eight", 3));linkedList.Append(new Objects(1, "One", 4));linkedList.Print();}}
}
//运行结果:
/*
5
2
8
1*/

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

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

相关文章

Ubuntu18.04安装RTX2060显卡驱动+CUDA+cuDNN

Ubuntu18.04安装RTX2060显卡驱动CUDAcuDNN 1 安装RTX2060显卡驱动1.1 查看当前显卡是否被识别1.2 安装驱动依赖1.3 安装桌面显示管理器1.4 下载显卡驱动1.5 禁用nouveau1.6 安装驱动1.7 查看驱动安装情况 2 安装CUDA2.1 查看当前显卡支持的CUDA版本2.2 下载CUDA Toolkit2.3 安装…

车灯修复UV胶的优缺点有哪些?

车灯修复UV胶的优点如下: 优点: 快速固化:通过紫外光照射,UV胶可以在5-15秒内迅速固化,提高了修复效率。高度透明:固化后透光率高,几乎与原始车灯材料无法区分,修复后车灯外观更加…

对缓冲区的初步认识——制作进度条小程序

对缓冲区的初步认识--进度条小程序 前言预备知识回车和换行的区别输出缓冲区/n 有清空输出缓冲区的作用stdout是什么?验证一切皆文件为什么是\n行刷新? 倒计时程序原理 代码实现为什么这里要强制刷新?没有会怎样?为什么是输出的是…

RabbitMQ安装及使用

系列文章目录 文章目录 系列文章目录前言一、下载二、安装三、插件安装四、配置五、权限六、集群模式 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用&…

【MATLAB源码-第154期】基于matlab的OFDM系统多径信道下块状和梳妆两种导频插入方式误码率对比仿真。

操作环境: MATLAB 2022a 1、算法描述 OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)是一种高效的无线信号传输技术,广泛应用于现代通信系统,如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

[机缘参悟-158] :西游记中的“佛” 、“道”之争

目录 前言 一、西游记中的佛教元素 1.1 佛教元素 1.2 西游记佛教思想 1.3 佛教的三界五行:物质世界 1.4 佛教中不在三界内,不在五行中:精神世界 二、西游记中的道教元素 2.1 主要元素 2.2 道家思想 三、“佛”如何兼容“道” 3.1 …

RK3568 Android12 适配抖音 各大APP

RK3568 Android12 适配抖音 各大APP SOC RK3568 system:Android 12 平台要适配抖音和各大APP 平台首先打开抖音发现摄像头预览尺寸不对只存在右上角,我将抖音APP装在手机上预览,发现是全屏 一开始浏览各大博客 给出的解决方法是修改framework 设置为全屏显示: framewo…

2369. 检查数组是否存在有效划分

2369. 检查数组是否存在有效划分 题目链接&#xff1a;2369. 检查数组是否存在有效划分 代码如下&#xff1a; //动态规划 class Solution { public:bool validPartition(vector<int>& nums) {vector<int> dp(nums.size()1,false);//dp[i]表示前i个元素组成的…

Tomcat基础及与Nginx实现动静分离,搭建高效稳定的个人博客系统

目录 引言 一、TOMCAT基础功能 &#xff08;一&#xff09;自动解压war包 &#xff08;二&#xff09;状态页 1.登录状态页 2.远程登录 &#xff08;三&#xff09;服务管理界面 &#xff08;四&#xff09;Host虚拟主机 1.设置虚拟主机 2.建立站点目录与文件 二、实…

使用QEMU搭建U-Boot+LinuxKernel+busybox+NFS嵌入式开发环境

目录 0.课程大纲1.为什么要使用QEMU学习嵌入式QEMU简介使用QEMU可以做哪些事情?当前嵌入式行业现状如何适应这种变化使用QEMU学习嵌入式有哪些好处?驱动开发技能为什么要学习Linux 2.搭建嵌入式开发基本环境2.1.安装u-boot-tools2.2.安装交叉编译工具什么是ABI和EABI 3.QEMU安…

三、基准时钟、生成时钟、虚拟时钟的约束和意义

**前言&#xff1a;**前面从理论角度出发学习了时序分析的基本原理&#xff0c;本篇从设计的角度学习如何合理添加时钟约束。 文章目录 一、基准时钟&#xff08;base clock&#xff09;和生成时钟(generate clock)二、基准时钟的约束1.完成综合&#xff08;run implementatio…

linux的通信方案(SYSTEM V)

文章目录 共享内存(Share Memory)信号队列&#xff08;Message Queue&#xff09;信号量(semaphore) 进程间通信的核心理念&#xff1a;让不同的进程看见同一块资源 linux下的通信方案&#xff1a; SYSTEM V 共享内存(Share Memory) 特点&#xff1a;1.共享内存是进程见通信最…

排序(4)——堆排序

目录 堆排序&#xff08;回顾&#xff09; 基本思路 代码实现 向下调整排序 AdjustDown 建堆排序 时间复杂度 特性总结 堆排序&#xff08;回顾&#xff09; 重点回顾戳&#x1f449;堆排序 基本思路 堆排序(Heapsort)是指利用堆积树&#xff08;堆&#xff09;这种数…

SOCKS5代理、代理IP与网络安全的奇妙旅程

在数字时代&#xff0c;互联网安全和隐私成为了热门话题。从个人浏览习惯到企业数据保护&#xff0c;每个人都希望他们的在线活动既安全又私密。在这个背景下&#xff0c;了解SOCKS5代理、代理IP、HTTP协议和网络安全的基础知识变得尤为重要。 什么是SOCKS5代理&#xff1f; SO…

鸿蒙系统开发适配注意事项

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;的软件适配涉及到一些特定的注意事项&#xff0c;以确保应用程序在该操作系统上的正常运行和最佳性能。以下是适配鸿蒙软件时需要注意的一些关键问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的…

MySQL篇—执行计划介绍(第二篇,总共三篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

Python 编辑工具 Jupyter notebook

Jupyter notebook Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍 官网&#xff1a;Project Jupyter | Home Jupyter Notebook 是一个开源的交互式计算环境&#…

dockerdocker-copose_限制容器cpu和内存

本文目录 docker的限制方式限制CPU占用限制内存占用 docker-compose docker的限制方式 限制CPU占用 Docker使用--cpus参数来限制容器的CPU资源。该参数指定了分配给容器的CPU核心数量或百分比。 例子&#xff1a;限制CPU使用个数 docker run --cpus2 <imageName>以上…

网页版图像处理软件开发服务:助您项目在市场竞争中脱颖而出

在当今数字化时代&#xff0c;图像处理在各个行业中扮演着重要的角色&#xff0c;虎克专注于提供定制化的网页版图像处理软件开发服务&#xff0c;为您的项目保驾护航。 1.网页版图像处理软件的定制化需求 1.1行业特定功能 针对不同的业务需求&#xff0c;深入了解行业特点&…

springboot基于web的酒店客房管理系统论文

基于web的酒店客房管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了酒店客房管理系统的开发全过程。通过分析酒店客房管理系统管理的不足&#xff0c;创建了一个计算机管理酒店客房管理系统的方案。文…