链表中倒数第k个结点

 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 }

 

posted @ 2014-02-23 02:00  CrazyCode.  阅读(181)  评论(0)    收藏  举报