15_链表中倒数第k个节点
来源:互联网 发布:怎么监控数据库的变化 编辑:程序博客网 时间:2024/06/06 21:25
题目:输入一个链表,输出该链表中倒数第k个结点。
本题从1开始计数,即链表的尾结点是倒数第1个结点。
例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5 、6。这个链表的倒数第 3 个结点是值为 4 的结点。
Java版:
import java.util.Scanner;class ListNode { public int data; public ListNode next;}public class Main { //node:null //输入:1 3 5 7 //链表:7 5 3 1 null //查找倒数第k个其实就是产生的链表的正数第k个 public static ListNode findK(ListNode node, int k){ if(node.next == null || k <= 0){ System.out.println("Input Error!"); return null; } int start = 0; while(node.next != null && start < k){ start++; node = node.next; } return node; } public static void main(String[] args) { System.out.print("请输入单链表的节点数:"); Scanner in = new Scanner(System.in); while (in.hasNext()) { ListNode node = new ListNode(); node.next = null; int N = in.nextInt();//链表结点个数 if(N <= 0){ System.out.println("Input Error!"); return; } System.out.print("请输入链表(以空格隔开):"); for (int i = 0; i < N; i++) { //把p节点插到node节点后面,所以产生的链表与输入的链表顺序相反 ListNode p = new ListNode(); p.data = in.nextInt(); p.next = node.next; node.next = p; } System.out.print("请输入从后往前查询的位置k:"); int k = in.nextInt();//倒数第k个值 if(k > N){ System.out.println("Input Error!"); return; } ListNode kthNode = findK(node,k); System.out.println("链表倒数第k个节点的值为:"+kthNode.data); } in.close(); }}
阅读全文
0 0
- 15_链表中倒数第k个节点
- 15 链表中倒数第K个节点
- 15、链表中倒数第k个节点
- 查找链表中倒数第K个节点
- 输出链表中倒数第k个节点
- 链表中倒数第k个节点
- 链表中倒数第k个节点
- 删除链表中倒数第k个节点
- 链表中倒数第K个节点
- 链表中倒数第k个节点
- 链表中倒数第k个节点
- 查找链表中倒数第k个节点
- 链表中倒数第K个节点
- 链表中倒数第k个节点
- 链表中倒数第K个节点
- 删除链表中倒数第K个节点,
- 链表中倒数第k个节点
- 链表中倒数第k个节点
- 【Manacher】最长回文子串
- 简单有效设置Virtual Box 中的 ubuntu 到主机win10共享文件夹
- Springboot+jedis简单项目
- PAT乙级 1050 螺旋矩阵(25)
- 异常
- 15_链表中倒数第k个节点
- 【java学习笔记】 如果定义了带有参数的构造函数,则默认构造函数失效(需手动定义)
- 线程池 Callable实现多线程
- 在eclipse中添加Tomcat服务器
- 线程学习总结1
- TLPI UNIX linux系统编程手册源代码运行
- 小白练打字:金山打字通
- 计算机网络---网络标准技术与协议及其分类
- 【数据结构】公交线路管理