查找单向链表倒数第k个位置的节点

算法题9 查找链表中倒数第k个结点 <br />题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:<br />struct ListNode<br />{<br />      int      m_nKey;<br />      ListNode* m_pNext;<br />};<br />分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要打开我们的思路。<br />既然不能从尾 阅读详情

采用的是设置两个指针,当两个指针距离为k-1时开始同时移动从而达到目的

#include<iostream>
#include<stdio.h>
using namespace std;

struct LNode{
    int data;
    LNode *next;
};//这个是定义了一个结构体,Lnode,里面有数据域data和指针域next。

int BackLocate(LNode L, int k){
    LNode *p, *q;
    int count = 0;
    p = q = L.next;
    while(q != NULL){//count为1,输出头节点后面的节点数据,即9;count为2,输出8;count为3,输出7;count为4,输出6,
        count++;//count++先赋值再+1,++count先+1再赋值
	printf("%d\n",count);
        if(count > k)
            p = p->next;
        q = q->next;
	printf("%d\n",count);
	printf("%d\n",q->data);
	printf("%d\n",p->data);
    }
    if(k > count)	//当K大于链表长度时,返回-1
        return -1;
    return p->data;
}

int main(){
    int a[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    LNode L, *r;
    r = NULL;
    for(int i=0; i<10; i++){	//尾插法建立链表
        LNode *p;
        p = new LNode;
        p->data = a[i];
        if(r == NULL){
            L.next = p;
            r = p;
        }
        else{
            r->next = p;
            r = p;
        }
    }
    r->next = NULL;
    printf("%d\n", BackLocate(L, 4));
}

在这里插入图片描述

arduino uno spi驱动12864 arduino uno spi驱动12864 阅读详情

相关推荐

【一】PCIe基础知识

Linux PCIe基础知识

他山之石 可以攻玉 4万+

每日十道算法

1、链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { publ.

zpeien 1018

STM32F4串口接收ATGM336H GPS数据,手把手教你解析NMEA协议并转换经纬度格式

本文详细介绍了如何使用STM32F4开发板通过串口接收ATGM336H GPS模块的NMEA协议数据,并解析GNRMC语句获取经纬度信息。内容涵盖硬件连接、NMEA协议深度解析、数据校验实现以及经纬度格式转换的数学原理与代码实现,为嵌入式开发者提供完整的GPS数据处理解决方案。

weixin_42522575的博客 499

求单链表中倒数第K个结点

求链表中倒数第K个结点 转载于个人网站。 一.单向链表 维基百科中国是这样描述的: 单向链表(又名单链表、线性链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过从头部开始,依序往下读取。 从描述中,我们能知道单向链表的方向是单一的,也就是我们只能从第一个结点索引到第二个结点,无法从第二个结点索引到第一个结点。单链表在内存中是一组地址任意的存储单元,与数组不同,单链表是通过指针索引,每个结点除了存储当前结点的值,还会存储下一个结点的指针,尾结点的指针为空。 二.分析 因为单链表访问顺

AhCola 373

有了网段为什么还要有VLAN???

近几日,在学习VLAN及VXLAN方面的知识,对于产生原因做一个总结及详解。 VLAN(Virtual Local Area Network,虚拟局域网),其主要用途是用来缩小广播域,即进行隔离。 先对广播域的一个概念做如下描绘:如下图,主机A、B、C、D均连接在交换机SW1上,其中A、C同网段为192.168.252网段,而B和D同网段,为192.168.250网段。 现,假如A与C第...

dandandean_96的博客 6888

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

努力,加油每一天鸭~ 1038

【新浪面试题】 找到链表的k节点

前言 ★ 这里是小冷的博客 ✓ 优质技术好文见专栏 个人公众号,分享一些技术上的文章,以及遇到的坑 当前系列:数据结构系列 源代码 git 仓库 ‘ 数据结构代码地址 代码Git 仓库地址 新浪链表面试题 查找链表中的第k个节点 思路: 1.编写一个方法,接收head 节点,同时接收一个index 2,index表示的是倒数第index 个节点 3. 先把链表从头到尾遍历 得到链表的总长度 getlength 4。得到Size之后 我们从链表的第一个开始遍历(Size-index)个,就可以得到 5.

doomwatcher的博客 1230

【知识分享】车载以太网PCB布局设计指南

本文将深入探讨在设计车载以太网设备的印刷电路板(PCB)时需要着重考虑的若干关键主题。这些主题广泛涵盖了数据布线设计,以确保其符合信号完整性(SI)和电磁兼容性(EMC)标准;外部元器件的合理摆放;以及采取有效的抗电磁干扰(EMI)布局策略等方面。通过全面且细致地处理这些关键环节,能够显著提升车载以太网设备的性能与可靠性。

一只豌豆象的博客 1353

链表--如何在单向链表中找出第k个元素?

3.如何在单向链表中找出第k个元素? 方法1:先把链表遍历一遍,得到链表的总长度 getLength(),得到size后,从链表的第一个开始遍历 (size-index)个,就可以得到(遍历两次) public static Node findNode(Node head,int index){ if(head.next == null){//判空 return null; } int size = getLengt

原来是涛涛啊的博客 2752

如何提高电路的抗干扰能力

本内容详细介绍了电源传导干扰处理,包括滤波、Feedthrough电容器、磁环、磁珠、屏蔽的使用与选型,EMC电磁兼容测试项目简介与要求,单片机与电源抗干扰处理等。

让你爱上电路设计 8606

【机器学习】推理时计算优化——思维链(Chain-of-Thought)与慢思考范式 第一章:基础理论与认知框架 第二章:计算优化技术与前沿方法

过程监督在数学推理中展现出显著优势,因其能够定位错误发生的具体步骤,而非仅在最终答案处提供稀疏反馈。然而,高质量过程标注的获取成本高昂,这催生了基于自动验证器的近似方法。

VectorShift的博客 73

寻找链表中倒数第K个节点

0 题目 输入一个链表,输出该链表中倒数第k个结点。 1 思路解析 方法:滑动窗口法 设滑动窗口大小为K 滑动窗口的性质:剩余点个数为K-1。滑窗后的返回点个数据为N-(K-1). 一般的解法:先遍历一遍该单链表,获取链表的总节点数 n,那么第 n-k+1 这个节点就是倒数第 k 个节点。所以第二次再遍历到第 n-k+1 这个节点即可。 我们可以借助滑窗的思想解决此问题:窗口的大小即为K,不断移动该窗口,直到该窗口右边界为NULL时不再移动,此时窗口中左边界处即为要找的点。图示如下: 解

石榴姐yyds 3534

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

在一个只有头指针的单向链表中查找链表中倒数第K个位置上的节点元素(1)

Yannie's Blog 1600

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

算法练习帖--14--找出单向链表中倒数第 k 个节点(Java)

标题实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值 示例: 输入: 1->2->3->4->5 和 k = 2 输出: 4 说明:给定的 k 保证是有效的。 解决方式一(递归法): class Solution { public int kthToLast(ListNode head, int k) { //如果链表为空直接报错 if(head==null){ throw new RuntimeExcept

Inmaturity_7的博客 376

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

leetcode-面试题 02.02. 返回倒数第 k 个节点

// 面试题 02.02. 返回倒数第 k 个节点 // 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 //注意:本题相对原题稍作改动 //示例: //输入: 1->2->3->4->5 和 k = 2 //输出: 4 //说明: //给定的 k 保证是有效的。 //来源:力扣(LeetCode) //链接:https://leetcode...

qq_35510468的博客 243

13输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。...

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4255403.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明。谢谢。 题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的...

weixin_33713707的博客 185

数据结构——单向链表

算法:快指针先走k步,慢指针和快指针每次走1步(快指针总是领先慢指针k步),当快指针走到末尾时,慢指针即指向链表倒数第k个节点。无头单向链表,节点插入在头的话,每次头结点都会变,所以有了有头链表,头结点的pNext总是指向链表的第一个节点。算法:快指针pFast每次走2步,慢指针pSlow每次走1步,快指针到达末尾时,慢指针所在的位置即为中间位置。因为快指针第一次比慢指针多1,第二次快指针比慢指针快2,依次类推,环长一定是一个自然数,所以一定能相遇。每次选出最小的,第二小的...最大的,

m0_61965705的博客 922

倒数第k个节点 php,C++_C语言实现输出链表中倒数第k个节点,本文实例展示了C++实现输出链 - phpStudy...

C语言实现输出链表中倒数第k个节点本文实例展示了C++实现输出链表中倒数第k个节点的方法,分享给大家供大家参考之用。运行本文所述实例可实现输入一个单向链表,输出该链表中倒数第k个节点。具体实现方法如下:/** Copyright (c) 2011 alexingcool. All Rights Reserved.*/#include using namespace std;int array[] ...

weixin_34058060的博客 210

03、数据结构与算法--单向链表

本文介绍了链表的基本结构和实现方法。与顺序表不同,链表通过节点连接实现非连续存储,需要遍历访问元素。详细讲解了链表的头插法、尾插法、指定位置插入等基本操作,并重点分析了删除节点(单个和全部)的关键逻辑。文章还包含链表常见面试题的解析,如反转链表、分割链表、查找中间节点和倒数第k个节点等,通过代码示例和逻辑图解说明实现方法。最后展示了如何通过测试用例验证这些方法的正确性。

emmm1531的博客 954

面试题 02.02. 返回倒数第 k 个节点

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 来源:力扣(LeetCode) 暴力遍历 第一次遍历记录链表元素个数 第二次查找所在位置 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ int kthToLast(struct ListNode* head, int k) ..

syh's BF的博客 127

数据结构与算法(二)链表

1、链表介绍 链表是有序的列表,它在内存中的存储结构如下: (1)链表是以结点的方式存储的,是链式存储 (2)每个节点包含data域,next域:指向下一个节点 (3)如图:链表的每一个节点不一定是连续存储的 (4)链表分带头结点的链表和没有头结点的链表,根据实际的需求来确定 单链表(带头结点)逻辑结构示意图如下: 2、单链表的应用实例 使用带head头的单向链表实现水浒传英雄排行榜管理,完成对英雄人物的增删改查操作 (1)第一种方法在添加英雄时,直接添加到链表的尾部 思路分析示意图: (2)第二种方

weixin_46161565的博客 678

数据结构:单向链表

pTmpNode负责遍历后面的节点,当找到比pMinNode节点更小的值时,更新pMinNode,然后比较pSwapNode与pMinNode值的大小,将小的值存放在pSwapNode节点的数据中,pSwap再指向像一个节点,进行下一轮比较。将一个指针从第一个节点向后走,将一个指针从相遇点向后走,两个指针相遇的位置即为环入口的位置。快指针每次走2步,慢指针每次走1步,快慢指针相遇则说明有环。慢指针和快指针每次走1步(快指针总是领先慢指针k步)快指针到达末尾时,慢指针所在的位置即为中间位置。

m0_64378221的博客 662

输出单项链表中倒数第k个结点——牛客刷题

题目描述: 输入一个单向链表,输出该链表中倒数第k个结点 输入、输出描述: 输入说明:1、链表结点个数 2、链表结点的值3、输入k的值 输出说明:第k个结点指针 题目分析: 假设链表长度为n,倒数第k个结点=正序第n-k+1个结点,所以题目的实质可以看作是链表的遍历。 首先输入链表结点个数n与各个结点取值构建链表并返回链表的头指针; 其次,输入k,调用链表遍历函数,找到第n-k+1...

weixin_30306905的博客 171

单向链表的操作

如何计算环入口位置:将一个指针从第一个节点向后走,将一个指针从相遇点向后走,两个指针相遇的位置即为环入口的位置。如何计算环长:标记相遇的位置,让指针继续向后走,没走一步计算器自加,走回到标记位置,则计算器值即为环长。是否有环:快指针每次走2步,慢指针每次走1步,快慢指针相遇则说明有环。5.已知链表中间某个节点地址,不知道头结点地址,如何删除该节点。6.如何判断一个链表是否有环?4.链表的排序(冒泡排序、选择排序)2.查找链表倒数第k个节点。3.链表的倒置(反转)1.查找链表中间节点。

qq_43344188的博客 244

链表基本讲解

链表基本讲解,含例题

2302_81838100的博客 215

自学数据结构第三天

单向链表和双向链表

An_Xinran的博客 411
上一篇: 用python写贪吃蛇(三)
下一篇: 2010年408 将一维数组R中保存的序列循环左移p个位置
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值