1.求链表中的倒数第K个节点
注意事项:1、要是K大于链表长度怎么办?
2、k<=0怎么办?
ListNode* FindR_Kth(ListNode* p_head, unsigned int k)
2 {//找到链表的倒数第K个节点
3 //if (k==0)特殊处理
4 //k小于链表长度,特殊处理
5 if (p_head = nullptr)
6 return nullptr;
7 ListNode* first = p_head;
8 ListNode* second = p_head;
9 for (int i = 0; i < k - 1; i++)
10 {
11 first = first->next;
12 }
13 while (first->next != nullptr)
14 {
15 first = first->next;
16 second = second->next;
17 }
18 return second;
19 }
最终的完善:
struct ListNode{
2 int value;
3 ListNode* next;
4 };
5 ListNode* findKthToTail(ListNode *phead,unsigned int k)
6 {
7 if (k == 0)/
8 return nullptr;
9 if (phead == nullptr)
10 return nullptr;
11 ListNode *p1 = phead;
12 ListNode *p2 = phead;
13 for (int i = 1; i < k; ++i)
14 {
15 if (p1->next == nullptr){//若k比本身链表的最大长度还大则直接返回nullptr
16 return nullptr;
17 }
18 p1 = p1->next;
19 }
20 while (p1->next != nullptr)
21 {
22 p1 = p1->next;
23 p2 = p2 ->next;
24 }
25 return p2;
26 }
1.求链表中的倒数第K个节点的更多相关文章
- 在单链表和双链表中删除倒数第K个节点
[说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“在单链表和双链表中删除倒数第K个节点”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解 ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点
题目 在单链表和双链表中删除倒数第K个节点 java代码 /** * @Description:在单链表和双链表中删除倒数第K个节点 * @Author: lizhouwei * @CreateDat ...
- 算法总结之 在单链表和双链表中删除倒数第k个节点
分别实现两个函数,一个可以删除单链表中倒数第k个节点,另一个可以删除双链表中倒数第k个节点 思路: 如果链表为空,或者k<1 参数无效 除此之外 让链表从头开始走到尾,每移动一步,就让k的值减1 ...
- 链表中删除倒数第K个节点
问题描述 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 问题分析与解决 从问题当中,我们只能得到一个链表和要删除的第K个节点的信息,于是就有以下思路:如 ...
- 《剑指offer》面试题15 链表中的倒数第k个节点 Java版
书中方法:用两个节点一次遍历求得倒数第k个节点.注意头节点为空,k<=0,k大于节点个数的情况. public ListNode find(ListNode head, int k){ if(h ...
- 链表问题----删除倒数第K个节点
在单链表和双链表中删除倒数第K个节点 分别实现两个函数,一个可以删除单链表中的倒数第K个节点,一个可以删除双链表中的倒数第k 个节点,要求时间复杂度是 O(N),空间复杂度是 O(1). [解析] 基 ...
- 在单链表和双链表中删除倒数第k个结点
题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...
- [算法]在单链表和双链表中删除倒数第k个结点
题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...
- 链表中获取倒数第K个结点
/* * 链表中查找倒数第K个结点.cpp * * Created on: 2018年5月1日 * Author: soyo */ #include<iostream> using nam ...
随机推荐
- QQ设置手机和pc qq群消息不同步
作为开发人员QQ群很多,很正常,工作的时候才需要看qq信息和群消息,但是蛋疼qq在新版的qq必须设置同步,之前用的qq8.1版本可以设置不同步,但是现在突然不行 目前可以用的途径就是 QQ国际PC版2 ...
- eclipse启动报错
我的是win64位系统,eclipse,jdk1.8 64位 原因:网上说是jdk和eclipse的版本不一致导致的(32位jdk64位eclipse,或者相反): 解决过程: 安装了jdk1. ...
- 2018-2019-2-20175303 实验一 《Java开发环境的熟悉》实验报告
2018-2019-2-20175303 实验一 <Java开发环境的熟悉>实验报告 一.实验内容及步骤 实验1 1.用mkdir建立“20175303exp1”的目录 2.在“20175 ...
- Express全系列教程之(八):session的基本使用
一.关于session session是另一种记录客户状态的机制,与cookie保存在客户端浏览器不同,session保存在服务器当中:当客户端访问服务器时,服务器会生成一个session对象,对象中 ...
- Elasticsearch学习笔记(十一)Mapping原理
一.Mapping的功能作用 Mapping是定义如何存储和索引一个document及其所包含字段的过程. Mapping是index和type的元数据,每个type都有自己的一个mapping,决定 ...
- python练习题-day21
1.三级菜单 china_ditie = { "北京": { "一号线": ["四惠", "大望路", "天安 ...
- 11、jeecg 笔记之 界面常用整理 - 方便复制粘贴
1.datagrid 操作按钮(按钮样式) 操作按钮的显示主要依赖于 <t:dgCol title="操作" field="opt" ></ ...
- python split 的应用
# 1. 有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {"k":1, "k1":2,...}a1 = "k:1 ...
- encodeURIComponent 和 decodeURIComponent 对字符串url编码 用于url拼字符传值
- Epplus DataTable一次性导出
public void Export() { string fileName = ""; if (string.IsNullOrEmpty(fileName) == true) { ...