首页 > 其他分享 >链表的实现

链表的实现

时间:2024-09-12 23:23:01浏览次数:10  
标签:current head ListNode 实现 next 链表 节点

  链表是数据结构中一种基础且重要的数据结构,它允许我们有效地在序列中插入和删除元素,而无需重新分配整个数据结构。与数组相比,链表提供了更高的灵活性,但也可能在访问速度上有所牺牲。现在我将将从基础概念出发,逐步深入链表并详细探讨链表的基本操作及其与数组的性能差异和适用场景

基础概念 

链表其中的每个元素都是一个节点对象,各个节点通过“引用”相连接。引用记录了下一个节点的内存地址,通过它可以从当前节点访问到下一个节点。 

 

链表常用操作 

 头插

创建一个新的节点,并将其值设置为要插入的值。将新节点的next指针指向当前链表的头节点。更新链表的头指针,使其指向新节点。

public void insertHead(ListNode head, int value) {  
    ListNode newNode = new ListNode(value);  
    newNode.next = head;   
    head = newNode; 
}

尾插 

创建一个新的节点,并将其值设置为要插入的值。遍历链表,直到找到最后一个节点(即nextnull的节点)。将最后一个节点的next指针指向新节点。

public ListNode insertAtTail(ListNode head, int value) {  
    ListNode newNode = new ListNode(value);  
    if (head == null) {   
        return newNode;  
    }  
    ListNode current = head;  
    while (current.next != null) {  
        current = current.next;  
    }  
    current.next = newNode;  
    return head;   
}

 中间插入

 创建一个新的节点,并将其值设置为要插入的值。遍历链表,直到找到要插入位置的前一个节点。将新节点的next指针指向要插入位置的原节点。更新前一个节点的next指针,使其指向新节点。

public ListNode insertAtIndex(ListNode head, int index, int value) {  
    ListNode newNode = new ListNode(value);  
    ListNode current = head;  
    int currentIndex = 1;  
    while (current.next != null && currentIndex < index - 1) {  
        current = current.next;  
        currentIndex++;  
    }  
    newNode.next = current.next;  
    current.next = newNode;    
    return head; // 返回头节点  
}

适用场景

链表:适用于需要频繁插入和删除元素的场景,以及元素大小不确定或动态变化的场景。

数组:适用于元素大小固定、不经常插入和删除元素的场景,以及需要快速访问元素的场景。

 

 

标签:current,head,ListNode,实现,next,链表,节点
From: https://blog.csdn.net/qishuang6/article/details/142188028

相关文章

  • 网络编程基础项目一:TCP实现FTP功能
    目录FTP核心原理项目功能介绍: 大致思路复习stat函数stat获取当前路径下文件的属性代码服务器客户端 总结FTP核心原理客户端连接服务器后,向服务器发送一个文件。文件名可以通过参数指定,服务器端接收客户端传来的文件(文件名随意),如果文件不存在自动创建文件,如果......
  • 操作系统实验——存储器的分配与回收算法实现
    1.实验内容:Exercise1:本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。Exercise2:采用最先适应法、最佳适应法、最坏适应法分配主存空间。Exercise3:当一个新作业要求装入主存时,必须查空闲区表,从中找出一个......
  • python+flask计算机毕业设计基于的社会公益服务平台的设计与实现9iel49(程序+开题+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今社会,随着信息技术的飞速发展,互联网已成为推动社会公益事业创新的重要力量。然而,传统公益模式在信息传播、资源调配、参与便捷性等方......
  • python+flask计算机毕业设计基于智能推荐的宠物之家网站设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和人们生活水平的提高,宠物已成为许多家庭不可或缺的重要成员。宠物市场的繁荣不仅体现在宠物数量的激增上,更在于宠物主......
  • 基于springboot的篮球竞赛预约系统的设计与实现 (含源码+sql+视频导入教程+论文+PPT)
    ......
  • 基于SSM的体育赛事管理系统的设计与实现 (含源码+sql+视频导入教程+论文+PPT)
    ......
  • 如何利用 CSS 渐变实现多样化背景效果
    前言总在平常看到像这样的图片背景是如何实现的呢背景效果的多样性和美观性直接影响用户体验。CSS渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果,通过调整渐变类型和设置,你可以轻松实现从简单到复杂的各种背景效果。在......
  • 使用WebSocket协议实现在ESP32上音频接收播放
     主要目的:学习WebSocket通讯协议和ESP32开发所需配置:Pycharm,python3.12,ESP32S3N16R8, 扬声器(8欧,2W), 功放模块:MAX98357I2SAMP。一、介绍 1、WebSocket协议 WebSocket是一种网络通信协议,位于OSI模型的应用层。它提供了在单个TCP连接上进行全双工通信的能力,使得客......
  • 基于asp.net 软件缺陷跟踪系统的设计与实现
    博主介绍:专注于Java.net phpphython 小程序等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了1000+毕设题目方便大家学习使用感兴趣的可以先收藏起来,还有大家在......
  • 基于asp.net电子邮件系统设计与实现
    1 引言1.1 电子邮件介绍电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。通过连接全世界的Internet,实现各类......