解题思想:

1.创建一个结点类(为后面实现链表做基础)

2.创建一个查询倒数元素的方法

3.使用快慢指针的思想(主要的部分)

图中的表示的是查询倒数第k个结点的操作:

  创建一个快慢指针后pre(慢指针)指向的第一个结点,在通过k的具体数值来移动p1(快指针),让它们之间包含k个结点(包括它们自身),然后不断的将p1和pre向后移动,直到p1移动到最后一个结点的,此时pre所指的即为倒数第k个的结点。

代码如下:

 1 public class InquiryNode {
 2
 3     public static void main(String[] args) {
 4         int arr[]= {1,2,3,4,5,6,7,8};
 5         Node head=new Node();
 6         //将数组存储数据用链表串起来
 7         Node p=head;
 8         for(int i=0;i<arr.length;i++)
 9         {
10             p.next=new Node(arr[i]);
11             p=p.next;
12         }
13
14         System.out.println(Inquiry(head,5));
15
16     }
17
18     //查找倒数第K位结点值的方法
19     public static Object Inquiry(Node node,int k)
20     {
21         if(k<=0)
22         {
23             return null;
24         }
25
26         Node pre=node.next; //慢指针
27         Node p1=node.next; //快指针
28         //拉开快慢指针的距离
29         int count=1;
30         while(p1!=null&&count<k)
31         {
32             p1=p1.next;
33             count++;
34         }
35         //如果k大于元素个数之和则为空
36         if(p1==null)
37         {
38             return null;
39         }
40         //将快指针移动到最后一位,同时慢指针也以相同的进度跟上
41         while(p1.next!=null)
42         {
43             pre=pre.next;
44             p1=p1.next;
45         }
46         //慢指针所指的就是倒数第K的元素
47         return pre.data;
48     }
49
50 }
51
52     //结点类
53     class Node{
54         Object data;
55         Node next;
56
57         public Node()
58         {
59
60         }
61         public Node(int data)
62         {
63             this.data=data;
64         }
65      }

结果:

转载于:https://www.cnblogs.com/LgxBoKeYuan/p/10202270.html

链表例题2:链表的倒数第k个节点是多少相关推荐

  1. 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点

    实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值.注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2 输出: 4 说明:给定的 k ...

  2. 剑指offer:面试题22. 链表中倒数第k个节点

    题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1 ...

  3. 链表中倒数第k个节点

    链表中倒数第k个节点 [题目]: 输入一个链表,输出该链表中倒数第k个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6.这个链表的倒数第 3 个节点是值为 4 ...

  4. 链表问题2——在双链表中删除倒数第K个节点

    题目 实现一个函数,可以删除双链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 双链表的思路与前一篇文章单链表的思路基本一致,注意last指针 ...

  5. 链表问题2——在单链表中删除倒数第K个节点

    题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...

  6. 链表中倒数第k个节点 1

    题意: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  7. python代码找到链表的倒数第K个节点并打印

    python代码找到链表的倒数第K个节点并打印 在计算机科学中,链表是数据元素的线性集合,其顺序不是由它们在内存中的物理位置决定的.相反,每个元素指向下一个元素.它是一种数据结构,由一组节点组成,这些 ...

  8. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  9. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

  10. 数据结构——求单向链表的倒数第K个节点

    首先,对于链表来说,我们不能像数组一样直接访问,所以我们想到要求倒数第K个节点首先要知道最后一个节点. 然后从最后一个节点往前数K个. 最后得到想要的值. 但是这是不对的,为什么呢?因为题目给出的是单 ...

最新文章

  1. pushpop指令的操作数必须是字操作数_指令格式
  2. mac安装mysql8.0.11_【MySQL】Mac安装MySQL(V8.0.15)蹚坑记录
  3. 线程里面的yield();方法(让出线程)
  4. vscode安装设置go
  5. JQuery Mobile 手机显示页面偏小
  6. GDCM:基本应用程序级别机密性配置文件测试程序
  7. JAVA:说说你对序列化的理解
  8. 如何实现二次抛异常时保存第一次异常的详细信息?
  9. bootstraptable获取所有数据_关于Redis中的五种数据结构,要知其然知其所以然
  10. 英特尔显示器音频_联想YOGA C940英特尔移动超能笔记本评测:小身材也有大能量...
  11. 双线性插值实现图像放大算法 matlab,FPGA/verilog实现双线性插值图像放大
  12. 羊车门问题python程序_羊车门问题
  13. VS2010在加载项目时,提示无法打开项目文件, 此安装不支持该项目类型的解决方法
  14. linux 入门 及一些常用命令及常用软件安装
  15. mkv视频怎么转成mp4?
  16. 交换机和路由器的关系
  17. 订阅号服务器消息推送数量,如何解决微信公众号一个月只能发4次消息的问题...
  18. 使用c语言测试大端和小端,C语言*符号使用及大端法小端法测试
  19. 奇富科技语音论文入选国际顶会INTERSPEECH 2023
  20. 多线程之死锁介绍及预防

热门文章

  1. 20145237 Exp2 后门原理与实践
  2. centos yum 安装
  3. redis info 信息
  4. [读书]设计模式:享元模式
  5. ITAA学员的经典对白
  6. 解决问题--java.lang.ClassNotFoundException -- redis抛出
  7. 我私藏的一个超级无敌好用的 Java 工具类库
  8. 参考:创业公司搭建自己的技术架构
  9. 用python编程、假设一年期定期利率_《Python程序设计》题库.pdf
  10. bzoj3625:[Codeforces Round #250]小朋友和二叉树