作者:魔术师-文放 | 来源:互联网 | 2023-05-19 06:15
#includemyHead.h#includeallListNode.h*返回链表中倒数第k个节点(k1,2,。。。)设总共n个节点。倒数第k个就是正数第n-k+1.
#include "myHead.h"
#include "allListNode.h"
/*
返回链表中倒数第k个节点(k=1,2,。。。)
设总共n个节点。倒数第k个就是正数第n-k+1.如n=6,k=3,倒数第三个就是正数第4个。
为了减少两趟链表遍历(主要是减少一趟链表遍历求n),则牺牲空间拯救时间。
搞两个指针,一个向前走k-1步,当他准备走第k步的时候,另一个指针才开始走第一步。这样,前面指针和这个指针中间差值(k-1)
*/
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode *pre;
ListNode *p;
int t = 0;
if(pListHead == NULL || k==0)
return NULL;
pre = pListHead;
p = pListHead;
while((t++)<(k-1)){
if(p->next!=NULL){
p = p->next;
}
else return NULL;
}
while(p->next!=NULL){
p=p->next;
pre = pre->next;
}
cout<val;
return pre;
}
int main(){
ListNode *h ;
h= createListNode();
FindKthToTail(h,0);
return 1;
}