求链表的倒数第m个元素-程序员宅基地

技术标签: java  数据结构与算法  

 

 

法一:

首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第m个,转换为正数第n-m+1个,接下去遍历一次就可以得到结果。

不过这种方法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二次遍历用于查找正数第n-m+1个元素。 

 1 ElementType Find( List L, int m )
 2 {
 3     PtrToNode p;
 4     int n = 0;
 5     p = L->Next;  
 6     while(p)
 7     { 
 8       n++;    //先求出链表长度n
 9       p = p->Next;
10     }
11     
12     if(m > n)
13       return ERROR;
14     
15     int i = 1;
16     p = L;
17     for(; i <= n-m+1; ++i)  //倒数第m个即为正数第n-m+1个
18       p = p->Next;
19       
20     return p->Data;
21     
22 }

 

法二:

设置两个指针,让其中一个指针比另一个指针先前移k步,然后两个指针同时往前移动。循环直到先行的指针指为NULL时,另一个指针所指的位置就是所要找的位置

 1 ElementType Find( List L, int m )
 2 {
 3     PtrToNode p, q;
 4     p = q = L;
 5     int i = 0;
 6     for(; i < m; ++i)
 7     { q = q->Next;
 8       if(!q)
 9         return ERROR;
10     }
11     while(q)      //p,q一起走,当q为NULL时,p就是倒数第m个结点
12     {
13       p = p->Next;
14       q = q->Next;
15     }
16     return p->Data;
17 }

 

法三:用一个足够大的数组保存链表中的元素值

 1 ElementType Find( List L, int m )
 2 {
 3     int a[100000];
 4     int cnt = 0;
 5     L = L->Next;
 6     while(L)
 7     {
 8         a[cnt++] = L->Data;
 9         L = L->Next;
10     }
11     if(m>cnt)
12         return ERROR;
13     else
14         return a[cnt-m];
15 }

 

转载于:https://www.cnblogs.com/FengZeng666/p/9706771.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33813128/article/details/93242281

智能推荐

计算机毕业设计分享【Java编程语言/Vue/MySQL数据库/Springboot框架和Ajax】,Springboot医院人力资源管理系统的设计与实现-53606(上万套实战教程,赠送源码)-程序员宅基地

文章浏览阅读17次。免费领取项目源码,请关注●点赞收藏并私信博主,谢谢-本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对医院人力资源管理系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现医院人力资源管理系统和部署运行使用它。

计算机毕业设计选题分享-springboot高考志愿选择系统68335(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等-程序员宅基地

文章浏览阅读991次,点赞27次,收藏17次。免费领取项目源码,请关注赞收藏并私信博主,谢谢-论文针对在高校活动信息数据规模大,管理员人员和用户需要对高考志愿选择系统管理涉及到的信息进行管理的需求,设计了高考志愿选择系统的框架,给出了高考志愿选择系统的总体设计,并对高考志愿选择系统的架构及关键模块的实现过程进行了详细论述。采用Java语言和MySQL数据库技术,基于springboot框架实现了一个完整系统的设计,为使用者提供了良好的高考志愿选择系统。

SpringSecurity OAuth2.0获取授权码授权多个scope_oauth2 多scope-程序员宅基地

文章浏览阅读312次。调用授权吗链接时多个scope用空格(英文)或%20隔开。_oauth2 多scope

Unity 点乘(Dot)判断目标在物体的前后左右上下_unity dot-程序员宅基地

文章浏览阅读6.9k次,点赞17次,收藏46次。我们一步一步从最基础的来,刚开始学习Unity的时候分不清up、right、forward,用这张图就非常清晰了Vector3.forward和transform.forward的区别v3.forward:坐标系中的z轴的正方向(蓝轴),该值固定为(0,0,1)x、y轴同理transform.forward:物体自身坐标系中的z轴(蓝轴)的方面在世界坐标系中的指向。对于物体来说,该参数就是物体自身的正前方。x、y轴同理这个问题详解 上面两条是对这个详解的简化点乘(Dot)点乘_unity dot

electron + vue 打包桌面应用_npm 下载vue-cli-plugin-electron-builder-程序员宅基地

文章浏览阅读1.2k次。1.下载打包所需依赖npm i vue-cli-plugin-electron-buildernpm i electron2.运行npm run electron:build3.生成dist_electron文件4.安装exe应用即可!注意:路由模式需要调整为hash模式,不要使用cookie存储数据,应使用本地存储,或官方api..._npm 下载vue-cli-plugin-electron-builder

高通芯片为什么输苹果_一位软件工程师解释了为什么苹果要转向自己的芯片-程序员宅基地

文章浏览阅读464次。高通芯片为什么输苹果 一位软件工程师解释了为什么苹果要转向自己的芯片 (A software engineer explains why Apple is moving to its own silicon)Apple Silicon — it’s own custom system on a chip Apple Silicon —它是自己的芯片上定制系统 Apple’s Worldwide ..._to run intel-based applications,you will need to install rosetta

随便推点

自然语言处理中的文本检索和文本搜索-程序员宅基地

文章浏览阅读900次,点赞28次,收藏24次。1.背景介绍自然语言处理(NLP)是计算机科学与人工智能领域的一个分支,旨在让计算机理解、生成和处理人类语言。在NLP中,文本检索和文本搜索是重要的子领域,它们涉及到在大量文本数据中快速、准确地查找相关信息的能力。自然语言处理中的文本检索和文本搜索的主要目标是找到与给定查询最相关的文档或文本。这种技术在各种应用中发挥着重要作用,例如搜索引擎、文档管理系统、知识库、问答系统等。在本文中,..._自然语言处理的文档检索系统

安卓学习UI组件AlertDialog_安卓 alertdialog-程序员宅基地

文章浏览阅读88次。学习每一种组件,就加一个按钮到主界面里,然后点击按钮跳转到相关界面 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btn_progress" android:text="ProgressBar_Dialog" android:text_安卓 alertdialog

python解析库beautifulsoup_Python 之beautifulSoup4解析库-程序员宅基地

文章浏览阅读123次。一、节点选择器from bs4 importBeautifulSoupif __name__ == '__main__':html= '''yangszi你好!!!hello world'''soup= BeautifulSoup(html, features="lxml")#只会获取第一个匹配的print(soup.li) #yangszi#获取第一个元素的所有属性print(soup.li.a..._python soup.descendants 如何修改tag值

win10-你需要来自XXX的权限才能对此文件夹进行更改 转载_您需要guest提供的权限才能对此文件进行更改-程序员宅基地

文章浏览阅读3.1w次,点赞16次,收藏31次。windows 10 删除文件夹出现问题:你需要来自XXX的权限才能对此文件夹进行更改 你需要来自SYSTEM的权限才能对此文件夹进行更改解决流程: 右击打开此文件夹属性,如下图,点击高级按钮出现下图,点击更改: 继续,在输入框中输入e,右击按钮检查名称出现下图,并确认勾选替换子容器和对象的所有者,应用并确认: 重新..._您需要guest提供的权限才能对此文件进行更改

Q&S: powerpc-eabivle-gcc.exe: error: ewl_c9x.specs: No such file or directory_ewl_c9x_noio.specs: no such file or directory-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏8次。文章目录"powerpc-eabivle-gcc.exe: error: ewl_c9x.specs: No such file or directory" 问题解决办法问题原因问题再现解决办法1. 傻等2.手动更改.cproject3.Project属性设置“powerpc-eabivle-gcc.exe: error: ewl_c9x.specs: No such file or direc..._ewl_c9x_noio.specs: no such file or directory

目标检测中的大规模数据集介绍-程序员宅基地

文章浏览阅读322次,点赞4次,收藏10次。目标检测中的大规模数据集介绍1. 背景介绍目标检测是计算机视觉领域的一个重要任务,它旨在从图像或视频中识别和定位感兴趣的物体。随着深度学习技术的快速发展,目标检测方法取得了显著进展,在诸多应用场景中展现了优秀的性能。然而,高精度的目标检测模型的训练需要大规模的标注数据集作为支撑,这给研究和

推荐文章

热门文章

相关标签