Java中链表的头节点

第8讲:基于CST PCB Studio的电源完整性仿真(IR Drop + PDN) 本文系统介绍了电源完整性(PI)仿真的两大核心模块:直流IRDrop仿真与交流PDN阻抗仿真。文章详细阐述了两种仿真的原理、算法(PEEC和3DFE-FD)及完整操作流程,包括参数配置、软件实操步骤和常见问题解决方案。IRDrop仿真用于分析直流供电压降问题,PDN仿真则针对高频电源噪声和谐振问题。文中还提供了优化建议和故障排查方法,如调整铜箔厚度、优化电容布局等,为高速数字系统的电源完整性设计提供了全面的技术指导。(149字) 阅读详情

一个链表头节点为head

head     1     2     3     4     5     6

head叫做链表的头节点

1所在的节点叫做链表的首节点(不知叫法是否准确)

从定义上严格来说头节点head本身并没有值,它只是一个指向首节点1的指针。也就是说head.val为空,head.next.val=1。即head的下一个节点才是1的节点。那上述的链表就有7个节点(包含头节点head)。

 

但是,在一些编程题里,有可能把头节点默认为首节点。也就是说head不仅指向1,而且head.val=1,那head.next.val=2。即head就是1的节点,head的下一个节点是2的节点。那么这个链表一个就有6个节点(head和1所在的节点看作一个节点)。

1(head)     2     3     4     5     6

因此,若定义一个Listnode  ptr = head;则ptr.val = 1

 

有时我们需要定义一个辅助节点

        ListNode now = new ListNode(-1);

        now.next = head;

这表示定义一个节点now,它没有值,它指向头节点head。



例题:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5处理后为 1->2->5

(此题默认头结点就是首节点,且需要定义辅助节点来解决)

/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead == null )
            return pHead;
        ListNode now = new ListNode(-1);
		now.next = pHead;
		ListNode pre = now;
		ListNode cur = pHead;
		ListNode n = pHead.next;
		while( cur!=null && n!=null){
			if(cur.val==n.val){
				while(n!=null && n.val == cur.val)
			        n = n.next;
				pre.next=n;
				cur=pre.next;
				if(n != null)
                    n = n.next;
			}
			else{
			pre=cur;
			cur=n;
			n=n.next;
			}
        }
            return now.next;
    }
}

图解如下:

为什么不直接返回pHead? A:为了防止第一个节点就是重复节点的情况


所以必须定义一个辅助节点now,并返回now.next

YOLOv8改进 | Conv篇 | 利用YOLO-MS的MSBlock轻量化网络结构(既轻量又长点) 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块,我们将其用于C2f中组合出一种新的结构,来替换我们网络中的模块可以达到一种轻量化的作用,我将其用于我的数据集上实验,包括多个类别的数据集,其在轻量网络结构的同时,却能够提高一定的mAP精度,所以这是一种十分高效的模块,该网络结构非常适合那些模型精度已经无法提到,想要从轻量化模型的角度入手的读者使用。欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。 阅读详情

相关推荐

IFRS 9与CECL对比解析:跨国企业财务必须掌握的两种信用损失模型

本文深度解析IFRS 9与CECL两种信用损失模型的差异,帮助跨国企业应对财务合规挑战。从基础架构、数据治理到监管策略,详细对比三阶段模型与单一阶段模型的核心区别,并提供实施双轨制的实务建议,助力企业优化资本管理和税务筹划。

3c4x5z6v7b的博客 668

算法持续更新

那么 说明 head.val = 1 (我就按照上面定义的指针 , val代表存放的是数据, next代表存放的是下一个结点地址) 因为head其实也是一个类,所以 head. 属性(head.val) 这是java基础,我就不说这么多了 ,反正就是。即使你Head = null ,但是我们p已经存放了那个节点的地址啊,我们还是可以找到那个节点,他还是好好的。即使你Head = null ,但是我们p已经存放了那个节点的地址啊,我们还是可以找到那个节点,他还是好好的。

qq_50560491的博客 848

头歌操作系统2.3系统调用命令ls执行的系统调用

设置版本0内核为分析对象。然后一直c直到虚拟机出现。然后一直c就是答案了。

m0_74128952的博客 1万+

数据结构与算法---链表

看尚硅谷韩顺平老师课程写的记录

SimpleZihao的博客 691

lisp方格网法计算土方量_分享:两期土方工程量计算(方格网法)实例例题

最近遇到一个飞时达土方软件试用版客户,咨询怎么根据平整前的原始地形图和平整后的现状地形图来计算产生的土方工程量,也就是两期土方量,且需要用方格网法来计算,作为一个老道的工程设计人员,博主对这类的项目实例例题简直太熟悉了,用飞时达土方计算软件V13.0可以很方便的计算出来。 方格网法计算两期土方量流程 一、软件安装及注册 专业的飞时达土方计算软件FastTFT,请到飞时达软件官方网站去下载,注册完...

weixin_35131425的博客 1699

从FreeCAD到BIMBase:PlaneGCS约束求解器的移植使用指南

本文为BIMBase平台的开发者提供了一份详细的PlaneGCS几何约束求解器移植与集成指南。文章深入探讨了如何从FreeCAD中提取PlaneGCS核心代码,并将其适配到BIMBase的C++二次开发环境中,重点解决了内存管理、数据模型桥接、约束抽象以及性能调优等关键问题,旨在帮助开发者构建稳定高效的参数化设计模块。

weixin_29213525的博客 321

Python - 链表

链表是一系列数据元素,通过链接连接在一起。每个数据元素都以指针的形式包含到另一个数据元素的连接。Python在其标准库中没有链接列表。我们使用前一章讨论过的节点概念来实现链表的概念。我们已经看到了我们如何创建节点类以及如何遍历节点的元素。在本章中,我们将研究被称为单链表的链表的类型。在这种类型的数据结构中,任何两个数据元素之间只有一个链接。我们创建这样一个列表并创建其他方法来插入,更新和从列表中移...

Harrison509的博客 1108

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6667

头节点和头指针

不论是带头结点的链表还是不带头结点的链表,头指针head都指向链表中的第一个结点。如果该链表有头结点,则头指针head指向头结点,如果没有头结点,则头指针head指向链表的第一个节点。 1 带头结点的单链表中头指针head指向头结点,头结点的值域不含任何信息,从头结点的后继结点开始存储信息。头指针head始终不等于NULL,head->next等于NULL的时候链表为空。 2 不带头结点...

my_young_的博客 8503

把冷门数据从内存里请出去:ABAP 环境下玩转 SAP HANA Native Storage Extension (NSE) 的开发者实战笔记

摘要:SAP HANA NSE技术为ABAP系统提供了一种经济高效的温数据管理方案。文章首先指出企业数据存在"温度分层"现象,高频访问的热数据需常驻内存,而低频温数据更适合存储在磁盘或闪存。NSE通过混合列存架构,将不常访问的数据移至磁盘但仍保持数据库内统一管理,显著降低内存成本。 关键实施要点包括:在ADT技术设置中将Load Unit设为"Page Enforced"以启用NSE;理解buffer cache作为数据"抽屉"的工作原理;掌握选表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

Python爬虫实战:使用Scrapy+Playwright高效爬取全球专利数据库

本文将详细介绍如何使用Python最新技术栈(Scrapy+Playwright)构建一个高效的专利数据库爬虫系统。我们将从爬虫基础知识讲起,逐步深入到反爬应对策略、分布式爬虫架构以及数据存储方案,最终实现一个完整的专利数据采集系统。专利数据是技术创新领域的重要信息资源,包含技术描述、权利要求、申请人信息等宝贵数据。中国国家知识产权局(CNIPA)美国专利商标局(USPTO)欧洲专利局(EPO)世界知识产权组织(WIPO)

2201_76125261的博客 1384

java-数据结构-链表

单链表 ​ 结点:由数据域和指针域组成 ​ 链表长什么样子?(大概这样) ​ 后继与前驱: 例如上图a1是a2 的前驱,a3是a2的后继。 头结点和头(尾)指针:头结点是指链表的第一个结点(例如上图中的a1)、 头指针(head):是仅仅是一个引用变量,储存头结点地址的指针而已。 尾指针(tail):是链表中最后一个结点的指针。 链表的操作 添加元素 1.当链表为空时,将头指针和尾指针都指向新增结点。如图 ...

leaarning的博客 1305

第229篇 轨迹时间参数化——TOPP-RA和速度约束处理

本文介绍了时间最优路径参数化(TOPP)问题及其解法。TOPP研究如何在给定空间路径上分配时间,使机器人运动时间最短且不超速,需满足速度、加速度和力矩约束。经典解法采用相平面法,通过前向和后向扫描确定最优速度曲线。TOPP-RA改进了数值稳定性,支持多约束处理。文章对比了TOPP与轨迹优化的区别,列举了开源工具,并解答了面试常见问题,指出TOPP广泛应用于机械臂、AGV等领域。TOPP不改变路径形状,仅优化速度分配,其最优解具有bang-bang特性。

郑伟强dev的专栏 322

【Java数据结构】带有虚拟头节点的链表

虚拟头节点是什么? 虚拟头节点就是,在原本第一个节点之前,增加一个节点。即在链表为空时,仅有一个节点。这样操作的好处时,不需要在添加和删除的时候判断是否待删除或者待添加的索引为0 使用虚拟头节点有什么好处 我们先来对比以下,使用和未使用 对于添加元素方法 未使用添加元素 在理解上图后,要明白一个点,我们想在index插入节点,那么prev必须指向index的前一个节点!!,所以说,我们对于add方法内,要判断index是否为0 但是加上了虚拟头节点呢???,加上虚拟头节点后,我们从虚拟头节点的位置开始移动,

m0_52410356的博客 1220

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

两个单链表的合并JAVA(无头节点)java

将两个有序的单链表合并成一个有序的单链表,本人的思路是利用第三个单链表存储两个单链表的节点,若两个链表均为空,则直接返回;若其中一个链表为空,则直接将另一个链表连接至链表3上;若两个链表均不为空,先将其中一个链表1连接至链表3,然后遍历另一个链表2,将链表2中的节点按照顺序连接至链表3上。若出现链表3遍历完毕但链表2尚未遍历完毕的情况,可以直接将链表2剩下的节点连接至链表3尾部。

qq_45810014的博客 405

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表

讲一下设置虚拟头节点的那个方法,设置一个新节点指向原来链表的头节点,这样我们就可以通过判断链表的当前节点的后继节点值是不是目标删除值,来判断是否删除这个后继节点了。如果不设置虚拟头节点,则需要将头节点和后面的节点分开来讨论,代码会复杂一点。

我有明珠一颗的博客 277

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

链表 Java为什么对链表进行操作时,需要添加一个虚拟头节点

为什么对链表进行操作时,需要添加一个虚拟头节点。

m0_73078350的博客 590

链表(一)用Java语言实现单向链表(有/无虚拟头节点)

接口设计 在动态数组ArrayList和链表LinkedList中,有很多相同功能但不同实现的方法,因此将这些方法提取出来构成一个接口List,用于给这两个类实现。 方法 功能 int size() 返回元素数量 boolean isEmpty() 是否为空 boolean contains(E element) 是否包含element元素 int indexOf(E element) 返回element元素(可以为空)在数组中的索引,不存在则返回-1 void clear(

Demon_LMMan的博客 337

java链表的头节点有无数据_java链表添加头节点方法没有用

链表初始化后,再用定义的添加头节点方法没有用。//一个类链表里包含类节点classMyNodeLsit{classNode{intval;Nodenext;Node(intval){this.val=val;}}privateNodehead;privateintsize;publicMyNodeLsit(){this.head=null;this.siz...

weixin_34887818的博客 476

Java 旋转链表,给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

目录1.题目2.思路3. 代码 1.题目 旋转链表:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置 2.思路 如果链表为空(head==null)或者链表只有头结点(head.next==null)或者向右移动次数k=0,那么都是原链表,直接返回head 遍历链表求出链表长度len,注意到当向右移动的次数 k ≥ len 时,我们仅需要向右移动 k % len次即可。因为每 len次移动都会让链表变为原状。这样我们可以知道,新链表的最后一个节点为原链表的第len - k %

qq_44721738的博客 1103

Leetcode#203. 移除链表元素(Java解法+虚拟头节点法)

题目描述: 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 来源:力扣(LeetCode) 解题思路: 主要解题思路,删除链表中节点即及时更新前驱节点与当前节点即可。但有很多坑值得注意: 需要注意的问题: 1、考虑头结点head的val即为给定值的情况。并且应当用while(不能用if) 针对例如:[7,7,7,7] 7 .

张某某。的博客 187

备赛NO.4Java数据结构与算法之通过带head头节点的单向链表实现人物排行榜(不考虑顺序)

备赛NO.4Java数据结构与算法之通过带head头节点的单向链表实现人物排行榜(不考虑顺序)

qq_61352171的博客 120

数据结构之手写单链表(虚拟头节点)(Java)

代码】数据结构之手写单链表(虚拟头节点)(Java)

拒绝八股,追寻本质。 334

循环链表的头节点(java)

问题描述: 寻找循环链表的头结点。 思路分析: 寻找头节点,就要记录以前找过的结点,故我们使用hash表来记录结点,如果遇到重复,则直接返回即可。 代码见下: 结点类定义 package List; class Node{ int data; Node next; public Node(int data) { this.data = data; } } 实现类定义: package List; import java.util.HashSet; p

lianggege88的博客 1790

java 链表删除头结点,删除链表的倒数第N个节点,并返回链表的头节点

面试的时候遇到了一个笔试题,是leetcode的原题,原题的连接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/大概的内容:删除链表的倒数第N个节点,并返回链表的头节点。一开始遇到这个题也是一脸懵,通过查看解题思路才了解到有几种解决方式:单向项链表实现类:publicclassListNode{intva...

weixin_29885875的博客 613

单链表逆置 java_单链表的就地逆置--java实现(含头节点和不包含头节点)

前沿:链表是面试中经常问道的知识点,比如链表反转,就地反转,判断单链表是否相交,判断链表是否有环等都是常问的问题.今天说一下单链表就地反转.本文从包含头节点和不包含头节点两种链表都提供了相应的就地反转方案:头节点:数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。作用: 是为...

weixin_33514300的博客 586
上一篇: Java中数组(Array)和列表(ArrayList)的区别
下一篇: 二叉树的四种遍历方法
sofuzi
博客等级 码龄9年 20粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值