剑指offer之面试题15:链表中倒数第k个结点

题目:输入一个链表,输出该链表中倒数第k个结点。

成都创新互联公司自2013年创立以来,是专业互联网技术服务公司,拥有项目成都做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元南宫做网站,已为上家服务,为南宫各地企业和个人服务,联系电话:13518219792

思路:

两个指针,两个指针距离k个结点,当走在前面的指针已经走到NULL,后面的指针刚好走到倒数第k个位置

代码:

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) 
    {
        //边界条件1:pListHead指向空即为空链
        //边界条件2:k<=0,倒数的大小为正
        if(pListHead==NULL||k<=0)
        {
            return NULL;
        }
    	ListNode* pcur1=pListHead;
        ListNode *pcur2=pListHead ;
        while(k>0)
        {
            k--;
            //边界条件3:链表不够长,没有倒数第k个结点
            if(pcur1!=NULL)
            {
               pcur1=pcur1->next; 
            }
            else
            {
                return NULL;
            }
        }
        while(pcur1!=NULL)
        {
            pcur1=pcur1->next;
            pcur2=pcur2->next;
        }
        return pcur2;
    }
};


网站名称:剑指offer之面试题15:链表中倒数第k个结点
URL分享:http://azwzsj.com/article/pejsos.html