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 }