题目描述:
输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。
输出:
对应每个测试案例,
若有结果,输出相应的查找结果。否则,输出NULL。
样例输入:
5 2
1 2 3 4 5
1 0
5
样例输出:
4
NULL
#include<stdio.h>
#include<stdlib.h>
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
ListNode * findKthToTail(ListNode* pListHead,unsigned int k)
{
if(pListHead==NULL||k==0)
return NULL;
ListNode* pAhead=pListHead;
ListNode* pBehind=NULL;
for(unsigned int i=0;i<k-1;i++)
{
if(pAhead->m_pNext!=NULL)
pAhead=pAhead->m_pNext;
else
{
return NULL;
}
}
pBehind =pListHead;
while(pAhead->m_pNext!=NULL)
{
pAhead=pAhead->m_pNext;
pBehind=pBehind->m_pNext;
}
return pBehind;
}
int main()
{
int number,k;
while(scanf("%d %d",&number,&k)!=EOF)
{
int headData;
scanf("%d",&headData);
ListNode* pHead=(ListNode*)malloc(sizeof(ListNode));
pHead->m_nValue=headData;
pHead->m_pNext=NULL;
ListNode* pCur=pHead;
for(int i=0;i<number-1;i++)
{
int data;
scanf("%d",&data);
ListNode* pNode=(ListNode*)malloc(sizeof(ListNode));
pNode->m_nValue=data;
pNode->m_pNext=NULL;
pCur->m_pNext=pNode;
pCur=pCur->m_pNext;
}
ListNode* find = findKthToTail(pHead,k);
printf("%d",find->m_nValue);
}
}
结果:
分享到:
相关推荐
查找链表中倒数第K个节点,源代码验证通过,两种查找方法。
题目要求我们实现一个名为 `getKthFromEnd` 的函数,该函数接受两个参数:一个链表的头节点 `head` 和一个整数 `k`,返回链表中的倒数第 k 个节点。题目规定链表的倒数第 1 个节点是尾节点。 一种解决方法是遍历...
解决“链表中倒数第k个节点”这个问题的关键在于理解链表的结构以及如何有效地遍历它。这里我们将探讨双指针法,这是一种在链表问题中常用且高效的方法。 首先,我们要定义链表节点的结构。在Python中,我们可以...
在这个问题中,我们需要找到一个链表中倒数第k个节点。这个问题有多种解决方案,这里提供了两种方法:第一种是通过两次遍历链表,第二种是使用双指针一次遍历链表。 **方法一:两次遍历链表** 首先,我们来看第一...
在处理链表问题时,有时我们需要找到链表中的特定节点,比如倒数第k个节点。本题目的目标就是实现一个函数,给定一个链表和整数k,返回链表中倒数第k个节点。 链表通常由节点(ListNode)组成,每个节点包含一个值...
链表中倒数第k个节点.md
剑指 Offer 22. 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点
python python_剑指offer第14题链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点难度:简单题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点
c++ c++_剑指offer题解之链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们
本题目的核心是查找链表中的倒数第k个节点,这是一个经典的链表问题,常见于面试和考研试题中。下面我们将深入探讨这个问题以及如何通过编程解决。 首先,链表是由一系列节点组成的数据结构,每个节点包含一个数据...
本篇将详细讲解如何实现输出链表中倒数第k个节点的C语言程序。 首先,我们需要定义链表节点的结构体。在示例代码中,`Node` 结构体包含两个成员:`item` 存储数据元素,`next` 是指向下一个节点的指针。结构体初始...
剑指Offer(Python多种思路实现):链表中倒数第k个节点 面试22题: 题目:链表中倒数第k个节点 题:输入一个链表,输出该链表中倒数第k个结点。 解题思路一:为了实现只遍历链表一次就能找到倒数第k个节点,我们可以...
问题:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表...
创建一个链表,编程实现查找它的倒数第k个节点
处理链表时,有时我们需要查找特定位置的节点,例如找到链表中倒数第K个节点。这个问题通常出现在链表相关的算法和数据结构操作中。下面将详细讨论如何在PHP中实现这个功能。 首先,我们要明确链表节点的定义。在...
而在特定的应用场景下,删除链表中倒数第N个节点的需求则更为特殊,它需要对链表的长度进行推算或利用指针巧妙地定位。 ### 解题思路一 此方法采用的空间换时间策略。首先,对原始链表进行一次遍历,目的是计算...
剑指 Offer 22. 链表中倒数第k个节点难度:简单输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数