链表的初始化以及查找链表中倒数第k个节点的值

链表经典面试题(反转链表,中间节点,倒数第k个节点,合并分割链表,删除重复节点) 这里写目录标题反转一个单链表。返回链表的中间结点输入一个链表,输出该链表中倒数第k个结点将两个有序链表合并为一个新的有序链表并返回。以给定值x为基准将链表分割成两部分在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点 反转一个单链表。 题目描述 反转很好理解,就是我们生活中所说的颠倒,反转后原来链表的头节点变成尾结点,尾结点变成头节点,链表内容的顺序相反就行了。 基本思路 好理解的双指针(c里面的是指针,java里面是引用变量) 定义两个指针: pre和 cur ;pre在前 cur在后,pr 阅读详情
package com.xhy.stackandqueue;

public class LinkedList {

    public static class Node {
        int value;
        Node next;
        public Node(int value) {
            this.value=value;
        }

    }

    public  Node head;
    public  Node current;
    public void add(int data) {
        //如果头结点为空,为头结点
        if(head == null) {
            head = new Node(data);
            current = head;
        } else {
            current.next = new Node(data);
            current = current.next;
        }
    }
    //初始化链表,并且返回表头
    public Node init() {
        for(int i=0; i<9; i++) {
            this.add(i);
        }
        return head;
    }
    /**
     * 输入一个键表,输出该链表中倒数第k 个结点.为了符合大多数人的习惯,
     * 本题从1开始计数,即链表的尾结点是倒数第1个结点.例如一个链表有6个结点,
     * 从头结点开始它们的值依次是1、2、3、4、5 6。这个链表的倒数第3个结点是值为4的结点.
     *
     * @param head 链表的头结点
     * @param k    倒数第k个结点
     * @return 倒数第k个结点
     */
    public static Node findKthToTail(Node head, int k) {
        // 输入的链表不能为空,并且k大于0
        if (k < 1 || head == null) {
            return null;
        }
        // 指向头结点
        Node pointer = head;
        // 倒数第k个结点与倒数第一个结点相隔k-1个位置
        // pointer先走k-1个位置
        for (int i = 1; i < k; i++) {
            // 说明还有结点
            if (pointer.next != null) {
                pointer = pointer.next;
            }
            // 已经没有节点了,但是i还没有到达k-1说明k太大,链表中没有那么多的元素
            else {
                // 返回结果
                return null;
            }
        }
        // pointer还没有走到链表的末尾,那么pointer和head一起走,
        // 当pointer走到最后一个结点即,pointer.next=null时,head就是倒数第k个结点
        while (pointer.next != null) {
            head = head.next;
            pointer = pointer.next;
        }
        // 返回结果
        return head;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        LinkedList linkedList=new LinkedList();
        Node head = linkedList.init();
        Node findNode = findKthToTail(head, 5);
        System.out.println(findNode.value);
    }

}

查找单链表中倒数第k个位置上的结点 题目(2009统考真题): 已知一个带有表头结点的单链表,结点结构为 假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求: (1) 描述算法的基本设计思想 (2) 描述算法的详细实现步骤 (3) 根据设计思想和实现步骤,采用程序设计语言描述算法(使用C或C++或JAVA语言实现),关键之处请给出简要注释。 基本设计思想 : 定义两个指针变量p和q; 初始时 阅读详情

相关推荐

数据结构——查找链表倒数第K个位置结点(C语言)

查找链表倒数第K个位置结点 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 10010 #define ElemType int typedef struct LNode{ ElemType data; LNode *next; }LNode,*LinkList; //创建 LinkList initLinkList(int num){ LNode* head=(LNode *)malloc(siz.

Melody_my的博客 1567

【新浪面试题】 找到链表的k节点

前言 ★ 这里是小冷的博客 ✓ 优质技术好文见专栏 个人公众号,分享一些技术上的文章,以及遇到的坑 当前系列:数据结构系列 源代码 git 仓库 ‘ 数据结构代码地址 代码Git 仓库地址 新浪链表面试题 查找链表中的第k个节点 思路: 1.编写一个方法,接收head 节点,同时接收一个index 2,index表示的是倒数第index 个节点 3. 先把链表从头到尾遍历 得到链表的总长度 getlength 4。得到Size之后 我们从链表的第一个开始遍历(Size-index)个,就可以得到 5.

doomwatcher的博客 1230

BJFU_数据结构习题_235查找链表中倒数第k个结点

235查找链表中倒数第k个结点 描述 利用单链表表示一个整数序列,请实现一个时间复杂度为O(n)、空间复杂度为O(1)的算法,通过一趟遍历在单链表中确定倒数第k个结点。 输入 多组数据,每组数据有三行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔),第三行为k。当n=0时输入结束。 输出 对于每组数据分别输出一行,输出每个链表的倒数第k个结点对应的数值。 输入样例 1 7 5 ...

雪地行进 1731

链表--如何在单向链表中找出第k个元素?

3.如何在单向链表中找出第k个元素? 方法1:先把链表遍历一遍,得到链表的总长度 getLength(),得到size后,从链表的第一个开始遍历 (size-index)个,就可以得到(遍历两次) public static Node findNode(Node head,int index){ if(head.next == null){//判空 return null; } int size = getLengt

原来是涛涛啊的博客 2752

在带头单链表中查找倒数第k个结点(参数传出)

在带头结点的非空单链表中查找倒数第k个结点,如果查找不成功返回0,查找成功通过参数传回倒数第k个结点值并返回1,主函数中根据查找结果输出结点值,没有找到输出*。

AIGC 1064

C++链表操作与倒数第k个节点查找实战

链表是一种动态数据结构,在C++中广泛用于处理不确定数量的数据集合。与数组不同,链表通过节点之间的链接关系来组织数据,每个节点包含数据域和指针域,其中指针域指向下一个节点的地址,从而形成一个逻辑连续的数据链。链表的显著优势在于其动态内存分配机制,可以在运行时根据需要动态创建和删除节点,避免了数组容量固定的限制。这种特性使链表在插入和删除操作上具有较高的效率,特别适合频繁修改数据的场景。在内存中,链表节点的存储是非连续的,每个节点由指针动态链接。

weixin_42234168的博客 1093

Java题:查找单链表中第 k 个节点元素的值

遇到过一道奇奇怪怪的Java题:查找单链表中第 k 个节点元素的值,就整理出自己的想法,不知道对不对,还望大佬们指导。

奇妙方程式的博客 1007

掌握链表算法:实现查找链表中倒数第k个节点的算法

链表是一种基础的数据结构,在计算机科学中被广泛应用。简单来说,链表由一系列节点构成,每个节点包含数据和指向下一个节点的指针。根据指针的不同,链表可以分为单向链表、双向链表和循环链表。这三者在数据结构与算法领域中都有其独特的应用和场景。单向链表:每个节点仅指向其下一个节点,适用于单向遍历数据。双向链表:节点除了指向前一个节点的指针,还指向下个节点的指针,提供了双向遍历的功能。循环链表:链表最后一个节点的指针回到第一个节点,形成一个环形结构。

weixin_42611310的博客 1117

链表中第k个节点

方法1:双指针求解:这题要求链表的倒数第k个节点,最简单的方式就是使用两个指针,第一个指针先移动k步,然后第二个指针再从头开始,这个 时候这两个指针同时移动,当第一个指针到链表的末尾的时候,返回第二个指针即可。 public static <ListNode> ListNode getKthFromEnd(ListNode head, int k){ ListNode first = head; ListNode second = head;

qq_43751200的博客 1066

在一个链表中查找倒数第k个节点

创建一个链表,编程实现查找它的倒数第k个节点

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 449

求链表中第k个节点

这道题做法有很多种,首先讲一下像我这种脑子不是很好使的直白的做法。当然是先循环求出长度,再循环找到倒数第k个节点,即整数的n-k+1。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public c...

ONE_PIECE的专栏 1112

STM32鱼塘水质监测系统设计与实现

物联网技术在农业领域的应用正逐步深入,其中传感器网络作为关键基础设施,通过实时数据采集与传输实现环境监测。基于STM32微控制器的嵌入式系统因其高性能和低功耗特性,成为物联网终端设备的理想选择。该系统通过DS18B20水温传感器、PH传感器和浊度传感器组成的多参数检测网络,配合4G通信模块实现水质数据的远程监控。在农业物联网场景中,这种解决方案不仅大幅降低了传统人工检测的成本,更能通过实时预警有效预防养殖损失。本文介绍的鱼塘水质监测系统正是这一技术的典型应用,展示了如何通过STM32和常见传感器构建高性价比

weixin_42173218的博客 621

找出单向链表中的一个节点,该节点到尾指针的距离为K

找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。 链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; } 链表节点的值初始化为1,2,3,4,5,6,7。 输入描述: 该节点到尾指针的距离K 输出描述: 返回该单向链表的倒数第K个节点,输出节点的值 输入例子1: 2 输出例子1: 6 #include <iostream> using namespace std;

qq_32256033的博客 423

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 695

DSP的CLA调试技巧

本文介绍了基于TMS320F28377D的CLA(Control Law Accelerator)开发实战教程,涵盖基础配置、编程、调试与优化全流程。主要内容包括:CLA核心特性及其作为实时控制协处理器的优势;开发环境搭建与工程配置要点;CLA任务调度、数据交换及编程约束;调试技巧如断点设置和性能分析方法;进阶应用案例(批量除法运算)及优化策略;以及推荐的学习资源和硬件平台。教程强调数据一致性和任务同步问题,为快速上手CLA开发提供实用指导。

1048

线性表 -- 数组和链表

关于数组和链表的基础代码定义和算法题

Hoper-J的博客 454

PDD psnl_verification anti_content 生成顺序与环境校验说明

K不是明文 URL,而是从当前href再派生出来的一小段摘要值。页面 URL 变,K会跟着变但K不是直接肉眼可读的 URL 字串可以把它理解成“URL 的短摘要字段”。这一步是最容易被误解的地方。它吃进去的是压缩后的中间串不是直接吃环境字段它内部还带有长度预算 / 字符映射 / 位置处理逻辑所以最终看到的环境字段 bytes协议头deflate 压缩自定义编码多层叠加后的结果。先把字段总包做再把压缩结果转成raw再拼fTail最后走做字符级输出因此,当前看到的协议字段流。

码王吴彦祖的博客 70

找出单链表中的第一个节点,该节点到为尾指针的距离为k

题目描述 找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。 链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; } 链表节点的值初始化为1,2,3,4,5,6,7。 输入描述: 该节点到尾指针的距离K 输出描述: 返回该单向链表的倒数第K...

qq_41706331的博客 446

华为OD机试 - 战士技能规划设计 - 数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。你为一款动作游戏设计战士角色的技能:战士每个技能会消耗不同能量,释放技能有 2 个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态(即分段)。战士有一项爆发技巧:在单次战斗中有一次

学Java,找哪吒 243

读懂 SAP S/4HANA 里的 SAP Fiori 架构:前端服务器、搜索链路、传统应用接入与内容组织全景解析

摘要:SAP Fiori架构并非简单的系统连接图,而是明确区分界面层与业务数据层的三层分工体系:用户交互层(浏览器与Fiori launchpad)、前端技术层(SAPUI5运行环境)和业务数据层(SAP S/4HANA后端)。这种分离实现了生命周期解耦,前端专注于统一体验治理,后端处理核心业务逻辑。值得注意的是,SAP Fiori front-end server本质仍是ABAP系统,负责UI技术组件运行。虽然SAP S/4HANA推荐嵌入式部署,但独立部署在多系统场景中仍有价值。典型Fiori应用通过O

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

每日一题:链表中倒数第K个节点的查找

链表中倒数第K个节点的查找

zxjiaya的博客 1380

OpenHarmony AI系列:神经网络处理单元(NPU)驱动架构与实现详解

NPU(Neural Processing Unit,神经网络处理单元)是专门为神经网络计算设计的硬件加速器。在OpenHarmony系统中,NPU驱动是通过NNRT(Neural Network Runtime,神经网络运行时)框架实现的,它作为中间桥梁连接上层AI推理框架和底层NPU硬件,实现AI模型的跨芯片推理计算。

m0_67505153的博客 665

链表中的倒数第k个结点 合并两个链表 分割链表 链表的回文结构

链表中的倒数第k个结点,合并两个有序链表,分隔链表,链表的回文结构,分析解题思路,图解+代码解析.

@初阶牛的博客 1520

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

链表-----返回倒数第K个节点&&回文结构的判断&&相交链表

返回倒数第k个节点&&回文结构&&相交节点

大学成长道路上的探索经历与点滴思考,与君共勉,共筑成长。 1162

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

运用双指针查找链表倒数第K个节点

运用双指针查找链表第K个节点 双指针算法顾名思义就是运用两个指针搭配进行运算,此次的内容主要介绍的是解决链表问题常用到的快慢指针。 核心思想:先初始化两个指针且指向链表的头结点,然后让快指针先走K步,之后快慢指针同时前进。这样运行后,当快指针走到链表的末尾NULL时,慢指针正好指向倒数第K个节点。 下面是双指针的代码: 接下来就是整体的代码: #include<stdio.h> #include<stdlib.h> typedef struct LinkNode { int

浮沉ღ 494

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: java中数组与集合的互相转换
下一篇: 为什么HashMap集合的初始大小是16?
鹤野云间
博客等级 码龄9年 4粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值