链表中倒数第k个节点
输出链表中倒数第k个结点
思路:尺子思想,定义两个指针,先让p2走到正数第k个位置,然后p1和p2一起往前走,当p2指向最后一个节点的时候,p1就指向了倒数第k个节点
注意!!!一定要考虑特殊情况,比如链表为空,k<=0的情况;比如k大于了链表的长度的情况(如果p2走到了最后)!!!
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL||k<=0) return NULL; ListNode* p1=pListHead; ListNode* p2=pListHead; while(k>1) { if(p2->next==NULL) return NULL; else { p2=p2->next; k--; } } while(p2->next!=NULL) { p1=p1->next; p2=p2->next; } return p1; } };