返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么找到链表的倒数第n个结点
  • 287
分享到

怎么找到链表的倒数第n个结点

2024-04-02 19:04:59 287人浏览 薄情痞子
摘要

本篇内容主要讲解“怎么找到链表的倒数第n个结点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么找到链表的倒数第n个结点”吧!什么意思呢?我们以下面这个链表为例

本篇内容主要讲解“怎么找到链表的倒数第n个结点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么找到链表的倒数第n个结点”吧!

怎么找到链表的倒数第n个结点

什么意思呢?我们以下面这个链表为例:

怎么找到链表的倒数第n个结点

给定链表的头结点,但并不知道链表的实际长度,要求我们找到链表的倒数第n个结点。

假设n=3,那么要寻找的结点就是元素1:

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

如何利用队列呢?小灰的思路如下:

1.创建一个长度为n的队列,遍历原始链表,让结点逐一进入队列:

怎么找到链表的倒数第n个结点

2.当队列已满时,让队尾元素出队,新结点入队:

怎么找到链表的倒数第n个结点

3.当链表全部结点遍历完毕时,队尾的元素就是倒数第n个结点(因为队列长度是n):

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

————————————

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

首先,我们创建两个指针P1和P2,P1指向链表的头结点,P2指向链表的正数第n个结点(也就是例子中的第3个结点):

怎么找到链表的倒数第n个结点

接下来,我们让指针P1和P2同时循环右移,每次右移一步,直到指针P2移动到链表的末尾:

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

此时,由于P2指向链表的尾结点,且P1和P2的距离是n-1,因此P1所指的结点就是我们要寻找的链表倒数第n个结点:

怎么找到链表的倒数第n个结点

显然,这个方法从头到尾只需要对链表做一次遍历,而且仅仅使用了两个指针,算法的空间复杂度是O(1)。

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

public class NthFromEnd {     public static node findNthFromEnd(Node head, int n){         Node p1 = head;         Node p2 = head;         //把p2指针移动到正数第n个结点         for(int i=1; i<n; i++){             p2 = p2.next;             if(p2 == null){                 throw new IllegalArgumentException("参数n超出链表长度!");             }         }         //p1和p2一起右移,直到p2指向链表尾结点         while (p2.next != null){             p1 = p1.next;             p2 = p2.next;         }         return p1;     }      //快速创建链表     private static Node buildLinkList(int[] array){         Node head = new Node(array[0]);         Node p = head;         for(int i=1; i<array.length; i++){             p.next = new Node(array[i]);             p = p.next;         }         return head;     }      //链表节点     private static class Node {         int data;         Node next;          Node(int data) {             this.data = data;         }     }      public static void main(String[] args) {         int[] inputs = {5,3,7,2,4,1,9,8};         Node head = buildLinkList(inputs);         Node node = findNthFromEnd(head,3);         System.out.println("链表倒数第3个元素是:" + node.data);     }  }

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

怎么找到链表的倒数第n个结点

到此,相信大家对“怎么找到链表的倒数第n个结点”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么找到链表的倒数第n个结点

本文链接: https://lsjlt.com/news/84461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么找到链表的倒数第n个结点
    本篇内容主要讲解“怎么找到链表的倒数第n个结点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么找到链表的倒数第n个结点”吧!什么意思呢我们以下面这个链表为例:...
    99+
    2024-04-02
  • List怎么删除链表的倒数第N个节点
    本篇内容介绍了“List怎么删除链表的倒数第N个节点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:删除链表的倒数第N个节点题目给定一个...
    99+
    2023-06-19
  • LeetCode题解之如何删除链表倒数第n个结点
    这篇文章主要讲解了“LeetCode题解之如何删除链表倒数第n个结点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LeetCode题解之如何删除链表倒数第n...
    99+
    2024-04-02
  • C++实现移除链表倒数第N个节点
    这篇文章主要讲解了“C++实现移除链表倒数第N个节点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++实现移除链表倒数第N个节点”吧! Remove Nth Node From ...
    99+
    2023-06-20
  • C++进阶练习删除链表的倒数第N个结点详解
    目录1.链接2.题目描述3.解题思路4.题解1.链接 19. 删除链表的倒数第 N 个结点. 2.题目描述 3.解题思路 方法一 1.在对链表进行操作时,一种常用的技巧是添加一个哑...
    99+
    2024-04-02
  • C++实现LeetCode(19.移除链表倒数第N个节点)
    [LeetCode] 19. Remove Nth Node From End of List 移除链表倒数第N个节点 Given a linked list, remove the...
    99+
    2024-04-02
  • 利用Java怎么将链表输出到倒数第k个节点
    利用Java怎么将链表输出到倒数第k个节点?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。问题描述输入一个链表,输出该链表中倒数第k个结点。结点定义如下:publ...
    99+
    2023-05-31
    java ava
  • 如何利用Java输出链表中倒数第k个结点
    目录前言问题描述方法一方法描述动画演示代码如下方法二 方法描述动画演示代码如下总结前言 链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组...
    99+
    2024-04-02
  • C++解决输出链表中倒数k个结点的问题
    目录题目描述示例解题思路测试代码补充题目描述 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链...
    99+
    2024-04-02
  • C++ 解决求两个链表的第一个公共结点问题
    目录题目描述:输入描述:返回值描述:示例:解题思路:补充题目描述: 输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试...
    99+
    2024-04-02
  • 怎么获得MySQL结果集中的第n个最高值
    这篇文章主要介绍了怎么获得MySQL结果集中的第n个最高值,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。 MySQL中最棘手的问题之一...
    99+
    2024-04-02
  • C++怎么求两个链表的交点
    这篇文章主要介绍“C++怎么求两个链表的交点”,在日常操作中,相信很多人在C++怎么求两个链表的交点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么求两个链表的交点”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • php怎么找到字符串的第几个字符
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php找到字符串的第几个字符方法1:使用substr()函数substr() 函数可以从字符串的指定位置截取一定长度的字符:substr(...
    99+
    2016-02-14
    php 查找字符串
  • Java怎么删除链表中重复的结点
    本篇内容主要讲解“Java怎么删除链表中重复的结点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么删除链表中重复的结点”吧!核心考点:链表操作,临界条件检查,特殊情况处理在一个排序的链...
    99+
    2023-06-25
  • mysql怎么查询表中倒数第三日的全部数据
    这篇文章主要讲解了“mysql怎么查询表中倒数第三日的全部数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么查询表中倒数第三日的全部数据”吧!...
    99+
    2024-04-02
  • c++中一个数的n次方怎么表示
    c++ 中表示一个数的 n 次方有两种方法:使用 pow 内置运算符或使用乘法运算符(对于整数指数)。 C++ 中表示一个数的 n 次方的两种主要方式 在 C++ 中,表示一个数的 n...
    99+
    2024-05-01
    c++
  • LeetCode题解之怎么求链表的中间结点
    本篇内容介绍了“LeetCode题解之怎么求链表的中间结点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题...
    99+
    2024-04-02
  • web数组与链表到单链表的反转怎么理解
    本篇内容主要讲解“web数组与链表到单链表的反转怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web数组与链表到单链表的反转怎么理解”吧!数组与链表数组最大的一个特点就是,需要一块连续的...
    99+
    2023-06-16
  • MongoDB怎么删除找到的数据中第一条
    本篇内容介绍了“MongoDB怎么删除找到的数据中第一条”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1....
    99+
    2024-04-02
  • Java数据结构链表的概念是什么与怎么实现
    本文小编为大家详细介绍“Java数据结构链表的概念是什么与怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java数据结构链表的概念是什么与怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、什么是...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作