寻找链表倒数第k个节点
题目:有一个带头结点的单链表,设计一个函数找到指定的倒数第k个节点,输出节点值,并返回1,否则返回0,前提不能改变链表,尽可能高效
分析:
我们可以先统计出总共的节点数count,那么该节点的顺序数num=count-k+1,当然如果k>count,直接返回0,时间复杂度为O(n)
这里还有另一种更加便捷的方法,只需对链表遍历一次,我们设立两个指针,最开始均指向首节点,然后让q先移动k个节点,之后p
q同步移动,当q为NULL时,p所在的位置便是倒数第k个节点的位置
代码:
struct Link {int data;struct Link *next;
};
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int findTheReciprocalK(Link *h,int k) {//这是第一种解法struct Link *p = h->next;int count = 0,num;while (p) {//统计元素个数count++;p = p->next;}p = h->next;if (k > count) {return 0;}else {num = count - k + 1;while (--num) {//这里要用--num,如果用num--,会导致p为下一个元素,注意p = p->next;}printf("%d",p->data);return 1;}
}
int findTheRecipr
寻找链表倒数第k个节点相关推荐
- 剑指Offer之寻找链表倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 代码及解析 用的快慢指针的思路 public class FindKthValue {static public class ListNode { ...
- 单链表倒数第K个节点的查找和显示
单链表倒数第K个节点的查找和显示 最近在学回顾之前学到的知识,正好碰到了关于链表查找的一道面试题,在此贴出来,与小伙伴们共同交流~ 在刚看到题目,其实很容易就想到一个方法,就是先求链表的长度(leng ...
- 链表之删除双链表倒数第K个节点
链表之删除双链表倒数第K个节点 题目: 链表之删除双链表倒数第K个节点 思路: 之前写过 http://blog.csdn.net/u011068702/article/details/50280 ...
- 链表之删除单链表倒数第K个节点
删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路: 给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1.2.3.4.5.6 K值是 ...
- java链表的输出_Java输出链表倒数第k个节点
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
- c++链表获取长度,链表翻转,查找链表倒数第K个节点以及中间点
c++链表获取长度,链表翻转, 查找链表倒数第K个节点以及中间点 测试数据 ListNode* pHead = new ListNode();pHead->m_key = 1;ListNode* ...
- 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值.注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2 输出: 4 说明:给定的 k ...
- 输出链表倒数第K个节点
题目 输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针. 思路 算是比较简单的题目了. 解法一: 可以先遍历一遍统计链表个数,然后找到倒数第k个的下标再遍历 ...
- python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点
题目 实现一个函数,一个可以删除单链表中倒数第k个节点 难度 简单 分析 本题比较简单,实现方法多种多样,这里提供一种方法 首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个 ...
最新文章
- 飞书在线文档 美誉度国内最佳!一起来围观~
- mysql中utf8_general_cs和utf8_general_ci和utf8_bin的一点区
- embed中 src属性动态更改。
- 16.U-boot的工作流程分析-2440
- PAT 1079 Total Sales of Supply Chain[比较]
- SecureCRT连接虚拟机中的Linux系统
- php 多选按钮,单选和多选按钮如何给图片加样式
- Altium Designer中的长度单位如何转换?
- 【微信小程序】自定义导航栏
- html5 sha1,js-sha1加密
- CISCO三层交换机配置
- python基础之排列组合以及正则表达式
- 第四十七题 UVA437 巴比伦塔 The Tower of Babylon
- win10小喇叭出现红叉,解决办法(转)
- java yyyy m d_JAVA SimpleDateFormat使用YYYY-MM-dd的坑
- 08.甲流疫情死亡率
- python函数基础
- Android 新的锁屏接口的实现
- 温湿度DHT10读写例程
- 微信小程序开发入门-个人笔记
热门文章
- eclipse插件:打开选中文件所在的目录
- 网页Loading,让页面加载完再显示
- this.get_element .style为空或不是对象
- mouseover/out和mouseenter/leave的区别及用法
- css绘画三角形,实现一些图形
- 电机的入门之路系列5--二相四线,四相五线,四相六线电机的区分方法
- 机器学习实战4-sklearn训练线性回归模型(鸢尾花iris数据集分类)
- PTA9、计算利率 (10 分)
- 阿里云镜像下载ubuntu
- rust进水器怎么用_喷丝板钻孔速度太慢怎么办?用这款增速器,效率提高35%