1 #include "stdafx.h"
2 #include <iostream>
3 /*
4 题目:链表中倒数第k个节点
5 输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯.本题从1开始计数,即链表的尾结点是倒数第一个结点。
6 比如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6这个链表的倒数第三个结点是值为4的结点.
7 struct ListNode
8 {
9 int m_nValue;
10 ListNode* m_pNext;
11 };
12 */
13 using namespace std;
14 struct ListNode
15 {
16 int m_nValue;
17 ListNode* m_pNext;
18 };
19
20 ListNode* FindKthToTail(ListNode* pListHead,unsigned int k)
21 {
22 if(pListHead == NULL||k==0)
23 {
24 return NULL;
25 }
26 ListNode* pHead = pListHead;
27 ListNode* pBehind = NULL;
28 for(unsigned int i = 0;i<k-1;++i)
29 {
30 if(pHead->m_pNext!=NULL)
31 {
32 pHead = pHead->m_pNext;
33 }
34 else
35 {
36 return NULL;
37 }
38 }
39
40 pBehind = pListHead;
41 while(pHead->m_pNext!=NULL)
42 {
43 pHead = pHead->m_pNext;
44 pBehind = pBehind ->m_pNext;
45 }
46 return pBehind;
47 }
48 int _tmain(int argc, _TCHAR* argv[])
49 {
50
51 return 0 ;
52 }