Java-链表

Java链表总结 链表简单的curd操作入门 阅读详情

一、删除链表中所有值等于val的节点
在这里插入图片描述

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        //先判断链表是否为空
        if(head==null){
            return null;
        }
        
        ListNode prev=head;
        ListNode cur=head.next;
        while(cur!=null){
            if(cur.val==val){
                prev.next=cur.next;
                cur=cur.next;
            }else{
                prev=cur;
                cur=cur.next;
            }
        }
        //判断删除的是不是头节点
        if(head.val==val){
            head=head.next;
           // return head;
        }
        return head;

    }
}

二、反转单链表
在这里插入图片描述

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev=null;
        ListNode cur=head;
        ListNode newHead=null;
        while(cur!=null){
            ListNode curNext=cur.next;
            if(curNext==null){
                //反转之后新的头节点
                newHead=cur;
            }
            cur.next=prev;
            prev=cur;
            cur=curNext;
            
        }
        return newHead;
    }
}

三、给定一个带头节点的单链表,返回单链表发的中间节点,如果有两个中间节点,那么返回第一个
在这里插入图片描述

class Solution {
    public ListNode middleNode(ListNode head) {
        //if(head==null){
       //     return null;
       // }
        //返回链表的中间节点
        ListNode fast=head;
        ListNode slow=head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }
        return slow;
    }
}

四、输出单链表中倒数第K个节点
在这里插入图片描述

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null){
            return null;
        }
        if(k<=0){
            return null;
        }
          ListNode fast=head;
          ListNode slow=head;
        //让fast先走k-1步
        while(k-1>0){
            if(fast.next!=null){
            fast=fast.next;
                k--;
        }else{
                return null;
            }
        }
        while(fast.next!=null){
        fast=fast.next;
        slow=slow.next;
        }
        //slow所指的位置就是倒数第k个节点的位置
        return slow;
    }
}

五、将两个有序链表合并成一个链表,并且这个新链表是有序的
在这里插入图片描述

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode tmp=new ListNode(-1);
        ListNode newHead=tmp;
        ListNode headA=l1;
        ListNode headB=l2;
        while(headA!=null&&headB!=null){
            if(headA.val<headB.val){
                tmp.next=headA;
                headA=headA.next;
                tmp=tmp.next;
            }else{
                tmp.next=headB;
                headB=headB.next;
                tmp=tmp.next;
            }
        }
        if(headA!=null){
            tmp.next=headA;
        }
        if(headB!=null){
            tmp.next=headB;
        }
        return newHead.next;
    }
}

六、在一个排序的链表中,存在重复元素,请删除该链表中的重复的节点,返回链表的头节点
在这里插入图片描述

public class Solution {
    public ListNode deleteDuplication(ListNode pHead){
        //先生成一个虚拟节点
        ListNode node=new ListNode(-1);
        ListNode tmp=node;
        ListNode cur=pHead;
        while(cur!=null){
            if(cur.next!=null&&cur.val==cur.next.val){
                while(cur.next!=null&&cur.val==cur.next.val){
                    cur=cur.next;
                }
                cur=cur.next;
            }else{
                tmp.next=cur;
                tmp=tmp.next;
                cur=cur.next;
            }
            //最后一个节点的next要为null
        tmp.next=null;
        }
        return node.next;
    }
}

七、链表的回文结构
在这里插入图片描述

public class PalindromeList {
    public boolean chkPalindrome(ListNode A) {
        // write code here
        ListNode p=A;
        //1、找中间节点
        ListNode fast=A;
        ListNode slow=A;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
            //slow所指的位置就是中间节点的位置
        }
        //反转后半部分
       // ListNode prev=slow;
        ListNode cur=slow.next;
        ListNode q=null;
        while(cur!=null){
            ListNode curNext=cur.next;
            if(curNext==null){
                //保存最后一个节点
               q=cur;
           }
            cur.next=slow;
            slow=cur;
            cur=curNext;
        }
        //进行比较p、q
        while(q!=p){
        if(q.val!=p.val){
           return false;
        }
            //判断偶数的情况
        if(p.next.val==q.val){
            return true;
        }
        q=q.next;
        p=p.next;
    }
    return true;
    }
}
关于图像傅里叶变换得到的频谱图的通俗理解 傅里叶变换过程: 经过傅里叶变化且频谱居中化处理的频谱图: 1.如果将图像某一行上的灰度变化看作是一个离散信号,那么整张图像可以看作是一个分布在二维平面上的信号,因此图像可看作是空间域信号。傅里叶变换则是将图像灰度分布(空间域信号)变换到了频域上,给我们提供了观察图像的另一个视角。 2.图像的频谱图(频谱居中后)的中心点是频率最低点,以该点为圆心,不同半径的上的点表示不同的频率。这里的图像频率是指对应原图像中的某灰度曲线变化的快慢(这么说不严谨,但是按照上面第1点的角度,似乎也可以这么理解 阅读详情

相关推荐

基于STM32的多路火灾报警系统设计

本文设计了一款基于STM32的多路火灾报警系统,利用多个传感器组合(如烟雾传感器、温度传感器等)进行数据采集与处理,精确判断火灾情况,并及时发出报警信号,保障生命与财产安全。本系统设计了一款基于STM32的多路火灾报警系统,通过结合烟雾传感器和温度传感器,提升了火灾检测的准确性和可靠性。未来,系统可以进一步集成更多传感器,如气体传感器、湿度传感器等,进一步提升火灾报警系统的智能化水平。本系统采用STM32F103单片机作为核心处理单元,结合烟雾传感器、温度传感器和报警模块,实现多通道火灾报警功能。

stm32d1219的博客 2028

Java数据结构篇之链表

/头插法//尾插法//任意位置插入,第一个数据节点为0号下标//查找是否包含关键字key是否在单链表当中//删除第一次出现关键字为key的节点//删除所有值为key的节点//得到单链表的长度int size();@Override@Override【解释】

MasterJundarj的博客 5518

从单机到多机:用llama.cpp的RPC模式榨干你闲置的GPU(附性能调优参数)

本文详细介绍了如何利用llama.cpp的RPC模式实现多机部署,将闲置GPU资源整合为高效推理集群。通过实战案例展示了性能调优参数设置、端口分配策略以及常见问题排查技巧,帮助中小团队最大化利用异构GPU设备,提升文本摘要等任务的推理效率。

weixin_27240351的博客 588

数据结构——链表(java)

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。

薯条和番茄酱的博客 4707

clock-gating整理

文章目录clock gating 理解1、latch双稳态器件常见锁存器结构SR锁存器D锁存器2、clock gating(clock low-active) latch + AND gating 电路(clock high-active)latch + OR gating 电路 clock gating 理解 1、latch 参考:https://www.cnblogs.com/IClearner/p/6443539.html 双稳态器件 稳定状态为0或1两种 举例:交叉耦合反相器 假设初始Q为1,则可

d_b_的博客 1万+

Python3 ACM模式输入输出全攻略:从牛客网到华为机试的实战技巧

本文详细解析了Python3在ACM模式下的输入输出处理技巧,针对牛客网、华为机试等在线评测系统。文章从input()函数本质出发,总结了六种高频输入模式的处理模板,并提供了链表、二叉树等数据结构的I/O实战方案,最后给出性能优化与常见避坑指南,帮助开发者高效应对算法笔试。

zero1的博客 998

JAVA——链表

一、链表概念及结构 链表:链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。如下图:(通俗的说:就是由一个个节点组成,这些节点逻辑上连续,物理上不连续) 类比火车: singleLinkedList ——火车车次(一整个火车or哪趟火车) Node——车厢,具体储存元素的类,每个单链表的节点就是Node的一个对象 Node.head ;——当前链表的头节点(只要知道头节点就可以此访问链表中的所有节点) int size ;——当前链表的长度(节点个.

qq_69133469的博客 3万+

SCI、中科院1区算法应用:(BWO-CNN-BiGRU-Attention)白鲸优化深度学习-融合注意力机制预测程序代码!包含特征可视化,数据Excel导入,直接运行!

BWO 白鲸优化算法,于2022年发表在SCI、中科院1区期刊《Knowledge-Based Systems》上。我们利用该高创新算法对我们的CNN-BiGRU-Attention时序和空间特征结合-融合注意力机制的回归预测程序代码中的超参数进行优化。

weixin_48747334的博客 3261

【Java】链表LinkedList

链表(Linked List)是一种常见的数据结构,用于存储和组织数据。它由一系列节点(Node)组成,每个节点包含两个主要部分:数据域(Data)和指针域(Pointer)。 数据域存储节点所需的数据或信息,可以是任意类型的数据,如整数、字符、对象等。指针域则指向链表中的下一个节点,将节点连接起来形成链表结构。 链表中的节点并不一定按照物理上的连续位置存储,而是通过指针域相互连接。这使得链表能够灵活地插入、删除和修改节点,而无需像数组那样进行元素的移动。

qq_61635026的博客 1万+

路由工具之策略路由policy-based-routing、MQC三板斧流分类、流行为、流策略

PBR(Policy-Based Routing,策略路由)策略路由可理解为控制路由,因为PBR策略的优先级高于传统路由表的转发,所以它主要用于影响数据包转发的技术。

Hades_Ling的优快云博客 5580

C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过scanf("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan

weixin_49764077的博客 8719

【Java】链表(LinkedList)(图文版)

本博客图文并茂地总结了Java当中链表的实现,以及相关方法的使用,希望对你有帮助!

2401_88030885的博客 3874

matlab数学建模练习(2)练习电子科技大学数学实验

【代码】matlab数学建模练习(2)练习电子科技大学数学实验。

c_wrj_的博客 1435

Java链表

在java中,链表可以通过自定义来实现,也可以直接使用类。LinkedList实现了接口,并且提供了双向链接的功能,即每个节点不仅由指向下一个节点的引用,哈有指向前一个节点的引用。这意味着LinkedList不仅可以作为列表使用,还可以作为栈或队列使用,因为它是基于双向链表现实的。data:用于存储实际的数据。next:用于存储向下一个节点的引用;如果是双向链表,则还有一个prev字段用于存储指向前一个节点的引用。

C6666888的博客 1488

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JAVA双向链表

JAVA双向链表操作 双向链表的每一个结点都有一条指向其后继结点的next指针和一条指向其前结点的pre指针。 双向链表的插入图示: 双向链表的删除图示: import java.io.IOException; import java.util.Scanner; class Node{ public int data;//数据域 public Node next;//后继指针域 public Node previous;//前驱指针域 public Node(int

qq_23858785的博客 6232

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

什么是java链表_java中的链表是什么

链表是一种根据元素节点逻辑关系排列起来的一种数据结构。本篇文章将和大家讲述Java中的链表,感兴趣的朋友可以了解一下。链表是一种根据元素节点逻辑关系排列起来的一种数据结构。利用链表可以保存多个数据,这一点类似于数组的概念。但是数组本身有一个缺点—— 数组的长度固定,不可改变,在长度固定的情况下首选的肯定是数组,但是在现实的开发之中往往要保存的内容长度是不确定的,那么此时就可以利用链表这样的结构来代...

weixin_34305091的博客 1614

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA-链表

LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中,LinkedList也实现了List接口,具体如下:【说明】1. LinkedList实现了List接口2. LinkedList的底层使用了双向链表3. LinkedList没有实现RandomAccess接口。

Lizhihao_的博客 2510

java 链表长度_Java实现单向链表

一、前言最近在回顾数据结构与算法,有部分的算法题用到了栈的思想,说起栈又不得不说链表了。数组和链表都是线性存储结构的基础,栈和队列都是线性存储结构的应用~本文主要讲解单链表的基础知识点,做一个简单的入门~如果有错的地方请指正二、回顾与知新说起链表,我们先提一下数组吧,跟数组比较一下就很理解链表这种存储结构了。2.1回顾数组数组我们无论是C、Java都会学过:数组是一种连续存储线性结构,元素类型相同...

weixin_42348880的博客 1190

java链表集合差,java集合—— 链表(java中的所有链表都是双向链表)

【0】README0.1) 本文描述转自 core java volume 1, 源代码 diy 的, 旨在理解 java集合—— 链表(java中的所有链表都是双向链表) 的相关知识;【1】链表(java中的所有链表都是双向链表)1.1)数组和数组列表有一个重大缺陷: 这就是从数组的中间位置删除一个元素要付出很大的代价, 其原因是数组中处于被删除元素之后的所有元素都要向数组的前段移动。(在数组中...

weixin_34446948的博客 218

Java手写链表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V73ZFeSh-1632464808641)(https://img-mid.csdnimg.cn/release/static/image/mid/ask/081087464236187.jpg “=600 #left”)]

qq_45464560的博客 2500

java链表(java链表方法)

如何使用Java实现单链表? fzw。sf; public class List4j { private Node head ; private int length; public List4j(){ head = new Node(null,null); length = 0; pub...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 367

java给链表赋值_java链表的各种操作

java里面没有指针的说法,所以初始化的时候,就是新建一个null节点就是一个空链表了。//C里面链表会有头指针,头指针指向头节点如果想向空链表插入第一个节点,直接head=newNode;注意的情况是如果想循环链表,一定新建一个节点把head考出来,然后遍历,不能直接用head遍历/*** Created by Administrator on 2017-10-27.*/public class...

weixin_31746993的博客 3603

java链表是啥,java什么是链表

java什么是链表2018/6/19 22:16:00 阅读:769次java什么是链表来自简单日记网精选推荐。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构...

weixin_28979345的博客 384

链表Java

说起链表来大家可能都听过,因为他的名气还不小。链表里面的数据在存储空间的分布是不连续的。这就给了它一个优势,即链表允许节点在链表的任意位置插入。虽然数组搜查数据很方便,但是只能把数据添加到数组的末尾,没有选择插入的余地。

jimmy1881415157的博客 804

Java之链表

因为链表是由多个节点所构成的,又因为内部类是能对外隐藏,所以我们通过内部类的方式来进行构建节点。在这里面我们需要定义一个节点的引用和val变量来存放值。

kevien_G1的博客 1212
上一篇: Java-类加载过程
下一篇: Java-链表2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值