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

来源:互联网 发布:linux shell for循环 编辑:程序博客网 时间:2024/06/06 00:36

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


思路:设置两个指针p和q,让指针p先走k-1步,然后让p和q同时后移一个结点直到p的下一个结点为空,此时q的位置刚好是倒数第K个结点。

注意点:

1)      k<0或链表为空时

2)      没有第K个结点时


struct ListNode{    int m_nValue;    ListNode * m_pNext;};ListNode * FindKthToTail(ListNode * pHead,unsigned int k){if(pHead==NULL||k<0){return NULL;}ListNode * p=pHead; ListNode * q=pHead;int i=1;while(i<k){if(p->m_pNext!=NULL){p=p->m_pNext;i++;}else{//说明没有倒数第K个结点return NULL;}}while(p->m_pNext!=NULL){p=p->m_pNext;q=q->m_pNext;}return q;}



0 0
原创粉丝点击