链表中倒数第k个结点
来源:互联网 发布:绿蔓的读音知乎 编辑:程序博客网 时间:2024/06/05 11:57
题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思路
定义两个指针p1和p2,相隔k个结点的位置,p2在前。同时向前移动p1和p2,直到p2为NULL(尾后指针),此时p1指向链表倒数第k个结点。
需要注意的是,链表的长度可能不到k,这样就根本不存到倒数第k个结点,需要返回NULL。判断的方法是,在初始化p1和p2时,如果还没将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 (k == 0 || !pListHead) return NULL; ListNode* p1 = pListHead; ListNode* p2 = pListHead; //前后两个指针,相隔k个位置 int i = 0; while (i < k && p2 != NULL) //将p2移动k个位置 { p2 = p2->next; i++; } if (i < k) //k大于链表长度 return NULL; while (p2 != NULL) //同时移动p1和p2,直到p2为NULL,此时p1就是要输出的结点 { p1 = p1->next; p2 = p2->next; } return p1; }};
阅读全文
0 0
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第 k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 输出链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 链表中倒数第k个结点
- 链表中倒数第k个结点
- 查找链表中倒数第k 个结点
- 链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 链表中倒数第k个结点
- 链表中倒数第k个结点[数据结构]
- 链表中倒数第k个结点
- 机器学习算法(二)逻辑斯蒂回归
- ACM国家集训队论文
- Class类(1)
- Java 中十进制和十六进制的相互转换
- [CODEVS2145]判断奇偶性
- 链表中倒数第k个结点
- EventBus的使用及接收消息的四种模式介绍
- 详解C语言中的stdin,stdout,stderr
- 0-1背包问题(算法进化历程)
- 我的spring之旅之AOP编程
- PHP之Linux(四) 用户组与访问权限
- DP? HDU
- 解决问题:Android6.0 蓝颜扫描不到设备
- 谈谈机器学习的演化史与应用趋势