首页 » C++ » 链表中倒数第K个节点

链表中倒数第K个节点

2016-06-12 13:10:10阅读(415)

解决思路:遍历一遍,获取链表长度,然后再遍历一遍,找到第len-k个节点即为倒数第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) { if(pListHead==NULL)return NULL; int cnt=0; ListNode* p=pListHead; while(p!=NULL) { p=p->next; cnt++; } p=pListHead; for(int i=0;i<cnt-k;i++){ if(p!=NULL)p=p->next; else return NULL; } return p; } };




解决思路二:两个指针遍历一遍,这种题目最好纸上画个例子试一下,以免出错

/* 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* p=pListHead; ListNode* p2=p; for(unsigned int i=0;i<k-1;i++) if(p->next!=NULL)p=p->next; else return NULL; while(p->next!=NULL){ p=p->next; p2=p2->next; } return p2; } };

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹