【Java】链表的头插法和尾插法

头插法

头插法就是在已有的节点的前面插入新节点

如何实现

(1)先定义一个节点类ListNode,里面有value值和地址

public class ListNode {int value;ListNode next;public ListNode(int value){this.value = value;}@Overridepublic String toString() {return "ListNode{" +"value=" + value +", next=" + next +'}';}
}

(2)再创建一个链表类,里面定义一个头节点,ListNode head = null;把第一个节点的指针传给它,然后用头插法插入一个新的节点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是头插法的代码:

 /*** 头插法   结果是逆序* @param value*/public void headInsert(int value){ListNode node = new ListNode(value);if(head == null){head = node;return ;}node.next = head;head= node;}

尾插法

在链表的最后面插入节点

尾插法与头插法不同的是,先要找到链表最后面那个节点,所以就要定义一个游标index,index从头结点开始,如果index.next不是null,那么就往后面走,直到找到最后一个节点

此时游标index在头结点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
尾插法的相关代码:

 /*** 尾插法* @param value*/public void headFront(int value){ListNode node = new ListNode(value);if(head ==null){head = node;return ;}ListNode index = head;while(index.next != null){index = index.next;}index.next= node;}

总的ListLink类代码如下:

public class LinkList {public ListNode head;/*** 头插法   结果是逆序* @param value*/public void headInsert(int value){ListNode node = new ListNode(value);if(head == null){head = node;return ;}node.next = head;head= node;}/*** 尾插法* @param value*/public void headFront(int value){ListNode node = new ListNode(value);if(head ==null){head = node;return ;}ListNode index = head;while(index.next != null){index = index.next;}index.next= node;}
}

测试类:

public class Test {public static void main(String[] args) {LinkList linkList =new LinkList();//头插法的测试
//        linkList.headInsert(5);
//        linkList.headInsert(7);
//        linkList.headInsert(15);
//        linkList.headInsert(25);
//        linkList.headInsert(45);
//        linkList.headInsert(6);
//        System.out.println(linkList.head);//尾插法的测试linkList.headFront(3);linkList.headFront(6);linkList.headFront(4);linkList.headFront(78);linkList.headFront(34);linkList.headFront(28);linkList.headFront(12);System.out.println(linkList.head);}
}

要注意的是 头插法的结果是倒序的,而尾插法的结果是正序的

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

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

相关文章

开发指南046-机构树控件

为了简化编程&#xff0c;平台封装了很多前端组件。机构树就是常用的组件之一。 基本用法&#xff1a; import QlmOrgTree from /qlmcomponents/tree/QlmOrgTree <QlmOrgTree></QlmOrgTree> 功能&#xff1a; 根据权限和控制参数显示机构树。机构树数据来源于核…

让我们一起来看看这些强大的中国汽车品牌如何勇攀巅峰!

咱们中国的汽车品牌&#xff0c;就是这么牛&#xff01;你知道吗&#xff1f;他们已经悄悄崛起&#xff0c;一步步向着更广阔的海外市场进军了。尽管这个过程可能有点坎坷&#xff0c;但是“勇敢”始终是他们前行的动力&#xff0c;推动着他们不断向前&#xff0c;打造属于我们…

AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理

AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理 目录 AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理 一、简单介绍 二、文本摘要 三、在CNN/Daily…

秋招突击——7/9——MySQL索引的使用

文章目录 引言正文B站网课索引基础创建索引如何在一个表中查看索引为字符串建立索引全文索引复合索引复合索引中的排序问题索引失效的情况使用索引进行排序覆盖索引维护索引 数据库基础——文档资料学习整理创建索引删除索引创建唯一索引索引提示复合索引聚集索引索引基数字符串…

C#基于任务的异步模式(TAP)

1、C#异步模式分类 基于任务的异步模式&#xff08;TAP&#xff09; 基于事件的异步模式&#xff08;EAP&#xff09;和异步编程模型模式&#xff08;APM&#xff09; 2、基于任务的异步模式&#xff08;TAP&#xff09; 基于任务的异步模式&#xff08;TAP&#xff09;用单个方…

从零手写实现 nginx-28-error pages 指令

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

夹子音转换器matlab

操作过程点击此处观看 上段时间补习了一下傅里叶变化的知识&#xff0c;突发奇想可以根据此做一款声音转换器&#xff0c;使用工科神器Matlab进行完成&#xff0c;并且开发了可操作界面如下图所示&#xff1a; 功能实现与描述 软件中可以实现声音的录制、回放、文件的保存与…

【C++】动态内存分配(关于构造与析构函数的调用)动态数组类 动态创建多维数组 知识点+代码学习记录

一.动态内存分配相关知识点 1.堆和栈内存&#xff1a; 堆内存&#xff1a;动态分配的内存位于堆中&#xff0c;它不受作用域限制&#xff0c;由程序员控制其生命周期。 栈内存&#xff1a;局部变量和函数参数等自动分配的内存位于栈中&#xff0c;由编译器自动管理。 2.new…

性能测试(2)

jmeter参数化 loadrunner Jmeter IP欺骗&#xff0c;也称为IP欺诈&#xff0c;是指通过伪装、篡改IP地址的方式&#xff0c;进行网络攻击或欺骗行为。这种行为可能会导致网络安全问题&#xff0c;包括身份盗窃、数据泄露、DDoS攻击等。为了保护自己的网络安全&#xff0c;用户…

MySQL-表的约束

文章目录 一、空属性二、默认值三、zerofill四、列描述五、主键删除主键追加主键复合主键根据主键快速索引 六、自增长last_insert_id() 七、唯一键八、外键class表&#xff08;主表&#xff09;student表&#xff08;从表&#xff09; 一、空属性 之前我们将表的机构&#xff…

单例模式java

并发的有序性会导致返回空指针 class A{private static volatil A a;private A(){}public A getInstance(){if(anull){synchronized(A.class){if(anull)anew A();}}return a; }anew A();这条语句&#xff0c;他需要&#xff1a;开辟空间&#xff0c;初始化空间&#xff0c;指针…

python热门面试题三

面试题1&#xff1a;Python中的列表推导式是什么&#xff1f;请给出一个例子。 回答&#xff1a; 列表推导式&#xff08;List Comprehension&#xff09;是Python中一种非常强大且简洁的构建列表的工具。它允许你通过一个表达式来创建一个新的列表&#xff0c;这个表达式定义…

无显卡也可以玩大模型-MiniGPT-4篇

MiniGPT-4学习 1.Colab上部署MiniGPT-42.论文摘要3.模型架构4.模型训练5.总结 1.Colab上部署MiniGPT-4 代码&#xff1a; https://github.com/Czi24/Awesome-MLLM-LLM-Colab/blob/master/MLLM/MiniGPT-4-colab/MiniGPT-4.md 2.论文摘要 最近的 GPT-4 展示了非凡的多模式能力&…

【设计模式之美】【建造型】工厂模式:通过面向接口编程思路,串起业务流程

文章目录 一. 简单工厂&#xff08;Simple Factory&#xff09;第一种简单工厂&#xff1a;面向接口编程与工厂类&#xff1a;划分功能职责第二种&#xff1a;单例简单工厂&#xff1a;节省内存和对象创建的时间 二. 工厂方法&#xff08;Factory Method&#xff09;&#xff1…

文心一言:如何备考软考架构师

提问&#xff1a;软考高级:架构师指导&#xff0c;有哪些考点、重点考点有哪些&#xff1f;需要如何备考&#xff1f;案例分析题如何做&#xff1f;论文如何写&#xff1f; 文心一言回答1700字如下&#xff1a; 针对软考高级架构师的考试&#xff0c;以下是对考点、重点考点、备…

DiffusionModel-Transformer知识回顾

论文链接&#xff1a; Attention Is All You Need CNN vs RNN vs Transformer CNN&#xff08;卷积神经网络&#xff09; 特点&#xff1a; 局部连接&#xff1a;每个卷积神经元只与输入数据的局部区域连接&#xff0c;这有助于捕捉局部特征。权重共享&#xff1a;卷积核的权重…

Android笔记:Constructor (xxx) has been changed after generation.

遇到此报错时&#xff0c;onstructor (xxx) has been changed after generation.是因为修改了实体类字段后什么都不修改的话就会报这个错 这条信息是关于代码生成和代码变更的警告。当你使用某些工具&#xff08;如注解处理器、代码生成库等&#xff09;来自动生成代码时&…

运行在Linux上的程序越来越慢的排查思路

1、通过free -h 排查内存使用情况&#xff0c;是否内存满了 2、通过df -h 排查磁盘的使用情况&#xff0c;磁盘是否没有空间了 3、检查系统资源配置情况&#xff0c;比如使用ulimit -a检查当前会话的资源限制&#xff0c;如最大文件数、打开文件描述符数等&#xff0c;看是否…

清华计算几何-ConvexHull(凸包)-求极点InTriangle/ToLeft Test

ConvexHull(凸包) 凸包是什么 凸包是计算几何一个非常基础核心的概念。我理解的凸包就是给定一个点集合, 最外围的点的包围体就是凸包。如下所示: 极点(ExtremityPoint) 给定的点集合中, 如果一个点存在一条直线, 让其他所有点都在于该直线的同一侧, 则该点为极点。 非极点 …

如何理解electron 的预加载脚本

在 Electron 应用中,预加载脚本(Preload Script)是一个非常重要的概念,它允许你在渲染进程(web 页面)和主进程之间创建一个安全的桥梁。预加载脚本运行在 Node.js 环境中,但位于渲染进程的一个单独的上下文中,这意味着它可以访问 Node.js 的 API,但无法直接访问 DOM。…