剑指offer刷题之c++实现的求链表中倒数第k个值

来源:互联网 发布:网络流行文化的研究 编辑:程序博客网 时间:2024/06/06 16:38
#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<<pre->val; return pre;    }int main(){ListNode *h ;h= createListNode();FindKthToTail(h,0);return 1; } 

0 0
原创粉丝点击