题目描述:
输入一个链表,输出该链表中倒数第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个节点,源代码验证通过,两种查找方法。
链表中倒数第 k 个节点输入一个链表,输出该链表中倒数第 k 个节点。为了符合大多数人的习惯,本题从 1 开始计数,即链表的尾节点是倒数第 1 个节点。例如,一
链表中倒数第k个节点.md
链表中倒数第 k 个节点输入一个链表,输出该链表中倒数第 k 个节点。为了符合大多数人的习惯,本题从 1 开始计数,即链表的尾节点是倒数第 1 个节点。例如,一
剑指 Offer 22. 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点
剑指 Offer 22. 链表中倒数第k个节点难度:简单题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们
python 链表中倒数第k个节点(csdn)————程序
剑指Offer(Python多种思路实现):链表中倒数第k个节点 面试22题: 题目:链表中倒数第k个节点 题:输入一个链表,输出该链表中倒数第k个结点。 解题思路一:为了实现只遍历链表一次就能找到倒数第k个节点,我们可以...
本文实例展示了C++实现输出链表中倒数第k个节点的方法,分享给大家供大家参考之用。 运行本文所述实例可实现输入一个单向链表,输出该链表中倒数第k个节点。 具体实现方法如下: /* * Copyright (c) 2011 ...
问题:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表...
创建一个链表,编程实现查找它的倒数第k个节点
解答一遍历链表两次,第一次获得长度,第二个走(n-k+1)步ListNode* findK(ListNode* head,unsigned int k)解答二双
python 删除链表中倒数第N个节点(csdn)————程序
本文实例讲述了PHP获取链表中倒数第K个节点的方法。分享给大家供大家参考,具体如下: 问题 输入一个链表,输出该链表中倒数第k个结点。 解决思路 注意这个题目是返回节点,而不是返回值。返回值的话可以用栈来存储...
剑指 Offer 22. 链表中倒数第k个节点难度:简单输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数
C CODE FOR :只遍历一遍找出单链表的倒数第K个节点
主要介绍了Java输出链表倒数第k个节点的相关内容,涉及三种设计思路及代码示例,具有一定参考价值,需要的朋友可以了解下。