/*
题目:
链表中倒数第k个节点
*/
/*
思路:
考虑边界条件:链表为空,k值超过链表长度。
双指针:
q指针指向第k个节点,p指针指向第1个节点。
q指针指向最后一个节点,p指针指向倒数第k个节点。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stdio.h>
using namespace std; struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
}; ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == nullptr || k == 0) return nullptr; ListNode* kNode = pListHead;
ListNode* pNode = pListHead;
for(int i = 1; pNode != nullptr && i < k; i++){
pNode = pNode->next;
}
if(pNode == nullptr) return nullptr;
while(pNode->next != nullptr){
kNode = kNode->next;
pNode = pNode->next;
}
return kNode; } int main(){
ListNode* node1 = new ListNode(1);
ListNode* node2 = new ListNode(2);
ListNode* node3 = new ListNode(3);
node1->next = node2;
node2->next = node3;
node3->next = nullptr;
cout<<FindKthToTail(node1,4)->val<<endl;
}

  

最新文章

  1. 使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞
  2. PJAX初体验(主要是利用HTML5 新增API pushState和replaceState+AJAX)
  3. SQL SERVER几种数据迁移/导出导入的实践
  4. SQL语句处理一些修改、新增、删除、修改属性操作(MySql)
  5. Lua与C++互相调用(上)
  6. ACM/ICPC 之 BFS+状态压缩(POJ1324(ZOJ1361))
  7. golang time and duration
  8. JS中的call()和apply()方法和bind()
  9. (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)
  10. hihocoder 1038 01背包
  11. Kafka系列(二)特性和常用命令
  12. 【Bootstrap3.0建站笔记一】表单元素排版
  13. like-minded 都有什么意思_百度知道
  14. GOF23种设计模式精解
  15. javascript:面向对象和常见内置对象及操作
  16. Nginx+Redis+Ehcache大型高并发高可用三层架构总结
  17. cat查阅文件技巧
  18. Vue框架H5商城类项目商品详情点击返回弹出推荐商品弹窗的实现方案
  19. gitlab与pycharm结合
  20. vscode 右击文件||文件夹添加快捷方式

热门文章

  1. Codeforces 1062B Math(质因数分解)
  2. Why all application lack a kind of most really charm ?
  3. java架构之路-(netty专题)netty的编解码(出入战)与粘包拆包
  4. vue 插槽 ------ slot 简单理解
  5. MSSqlServer访问远程数据库
  6. Java开发最佳实践(二) ——《Java开发手册》之&quot;异常处理、MySQL 数据库&quot;
  7. webapi使用jwt做权限验证
  8. 【全集】大数据Java基础
  9. android button的selector
  10. Executor 任务执行器