首页 > 试题广场 >

输出单向链表中倒数第k个结点

[编程题]输出单向链表中倒数第k个结点
  • 热度指数:212162 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。

链表结点定义如下:
struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};
正常返回倒数第k个结点指针,异常返回空指针.
要求:
(1)正序构建链表;
(2)构建后要忘记链表长度。
数据范围:链表长度满足 ,链表中数据满足

本题有多组样例输入。




输入描述:

输入说明
1 输入链表结点个数
2 输入链表的值
3 输入k的值



输出描述:

输出一个整数

示例1

输入

8
1 2 3 4 5 6 7 8
4

输出

5
头像 君君橙
发表于 2021-03-29 21:43:07
解法一: 装作没看到,当数组解 :) while True: try: l, s, k = int(input()), input().split(), int(input()) print(s[l - k] if k else 0) except: 展开全文
头像 代码界的小白
发表于 2021-12-08 20:20:06
方法一:顺序查找 具体做法 最简单直接的方法即为顺序查找,假设当前链表的长度为 n,则我们知道链表的倒数第 k 个节点即为正数第 n - k 个节点,此时我们只需要顺序遍历到链表的第 n - k个节点即为倒数第 k个节点。 我们首先求出链表的长度 n,然后顺序遍历到链表的第 n - k个节点返回即可 展开全文
头像 江帆-
发表于 2021-11-04 23:56:42
因为华为认为倒数0节点上是没有值的,所以注意处理k是0的情况 无脑list啊,纯考试够用 while True: try: count, num_list, k = int(input()), [int(x) for x in input().split()], int(in 展开全文
头像 等人群散尽
发表于 2021-05-16 22:31:26
看到题解中有许多做法,但是很多都违背题目本意。题目考察有: 考察参赛者构建链表能力; 考察参赛者使用链表的能力。 违背本意的做法有: 不构建链表,使用其他容器; 倒序构建链表,为查找倒数第k个节点抄近路; 记住链表长度n,查找第n-k个节点。 但本题必须要(1)正序构建链表;(2)构建后要忘 展开全文
头像 牛客203560381号
发表于 2021-11-08 22:10:26
构造单链表,使用头插法,解决问题; import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); 展开全文
头像 摸鱼学大师
发表于 2021-10-26 13:39:20
题目的主要信息: 输入一个单向链表,输出该链表中倒数第k个结点 链表的倒数第1个结点为链表的尾指针 异常返回空指针 k为0输出0 方法一:根据长度找倒数k 具体做法: 正常遍历,根据输入连接链表,一共n个值,链表长度为n。 然后比较链表长度是否比k小,如果比k小返回一个空链表,否则遍历n-k次即 展开全文
头像 提瓦特认证干饭师
发表于 2022-02-02 11:35:01
class Node(object): def __init__(self,data, next = None): self.data = data self.next = next class LinkList(object): def __ini 展开全文
头像 米斯特rollin
发表于 2022-04-22 08:05:06
题解 此题主要考查对链表指针的理解,一般链表有三类节点:表头、表身、表尾; 1.表头的值为空(-1),nextNode 指针指向下一个节点。 2.表身的值为输入的值,nextNode 指针指向下一个节点。 3.表尾的值为输入值,nextNode指针为null 例如:输入五个节点,节点值分别为:4,5 展开全文
头像 古今未来最帅
发表于 2022-03-10 16:39:57
# 定义一个结点类:有两个参数,self.data存放自定义的数据,self.next存放下一个结点对象的地址 class Node(object):     def __init__(self, data):         #以sel 展开全文
头像 BSF
发表于 2021-10-18 14:33:12
while True: try: n, nums, k = int(input()), input().split(), int(input()) if k: print(nums[n-k]) else: 展开全文