//补充一下 链表的逆序操作   添加到listed 类中public Listed reverse() {Listed head = this;Listed p = head;// 单个节点的情况if (p.next == null) {return p;}// 从第二节点的开始Listed q = p;p = p.next;q.next = null;// 防止自循环// 临界条件while (p != null) {Listed temp = q;q = p; //存储p = p.next;q.next = temp;}// 将值付给头节点head = q;return head;}

面试中遇到这个问题,写下给大家分享一下

package com.qey.learn;import com.sun.org.apache.xerces.internal.dom.PSVIAttrNSImpl;
import jdk.nashorn.internal.ir.LiteralNode;/*** @ClassName Listed* @Description* @Author qianxl* @Date 2021-03-11 17:12* @Version 1.1**//*** 链表分为包含头节点* 不包含头节点  两种类型*/
public class Listed {private int data;private Listed next;public Listed(int data) {this.data = data;}public Listed getNext() {return next;}public void setNext(Listed next) {this.next = next;}public void showListed() {Listed temp = this.next;if (this == null) {System.out.println("数据为空");}while (temp != null) {System.out.println(temp.data);temp = temp.next;}}public Listed addList(Listed listed) {Listed p = this;if (p.next == null) {p.next = listed;return this;}Listed temp = p.next;while (p != null) {temp = p;p = p.next;}temp.setNext(listed);return this;}/*** 逻辑思路分析:* (1)找到倒数下标p1 比如  倒数2  p1为1 则p2 为2  ;循环 p1=p1.next*      则当p2=p2.next  当p2.next==null为最后一个元素时,则p1就是倒数第二元素*      Lastposition =1 时则p1 倒数第二个元素  lastPosition -=1;* @param lastPosition 倒数位置* @return*/public Listed findLastN(  int lastPosition) {if(lastPosition<=0){System.out.println("下标从1开始");return null;}lastPosition -=1;//去除head 根节点Listed temp = this.next;Listed p1 = this.next;//临界条件if (p1 == null) {return null;}Listed p2 = p1;while (p2 != null&& lastPosition>0) {lastPosition--;p2 = p2.next;}// 第一种情况就两个节点if (p2.next == null) {this.next = this.next.next;}//第二种情况 多个节点while (p2 != null) {if ( p2.next == null) {temp.next = temp.next.next;//;return this;} else {temp = p1;p1 = p1.next;p2 = p2.next;}}return this;}}class  LinkedlistDemo{public static void main(String[] args) {Listed head = new Listed(0);head.addList(new Listed(2));head.addList(new Listed(3));head.addList(new Listed(4));head.addList(new Listed(5));System.out.println(head);Listed lastN = head.findLastN(1);lastN.showListed();}
}

链表中求倒数第几个元素并打印出来相关推荐

  1. 请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素

    给定一个单向链表(长度未知),请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素. 实现这个算法,并为可能出现的特例情况安排好处理措施. 倒数第m个元素"是这样规定的:当m= ...

  2. LeetCode19. Remove Nth Node From End of List 删除链表中的倒数第n个位置的元素

    前言 本文是LeetCode19. Remove Nth Node From End of List解法,这个题目需要删除链表中的倒数第n个位置的元素 代码 # -*- coding: utf-8 - ...

  3. 剑指 Offer 22(链表4).链表中的倒数第k个结点

    剑指 Offer 22(链表4).链表中的倒数第k个结点 问题描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链 ...

  4. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...

  5. python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法

    本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...

  6. c语言学习-在一个三行三列的矩阵中求出数值最大的元素及其行/列下标并打印输出

    在一个三行三列的矩阵中求出数值最大的元素及其行/列下标并打印输出 程序流程图: 代码: #include<stdio.h> void main() {int a[3][3]; int i= ...

  7. c语言单链表删除倒数第k个数,在单链表中删除倒数第k个节点

    实现方式很多,在这里只说两种实现方式.看不懂时候,大家可以画画图,对理解为什么很有帮助. 第一种方式: 1.首先判断K值和链表是否为空,如果k<=0,或链表为空,直接返回head: 2.满足上面 ...

  8. 数据结构初阶(4)(OJ练习【判断链表中是否有环、返回链表入口点、删除链表中的所有重复出现的元素】、双向链表LinkedList【注意事项、构造方法、常用方法、模拟实现、遍历方法、顺序表和链表的区别)

    接上次博客:数据结构初阶(3)(链表:链表的基本概念.链表的类型.单向不带头非循环链表的实现.链表的相关OJ练习.链表的优缺点 )_di-Dora的博客-CSDN博客 目录 OJ练习 双向链表--Li ...

  9. 单向链表中查找倒数第K个数

    问题 单向链表如果要找某一元素或者遍历链表,只能从头节点开始,所以如果我们用普通方法查找倒数第K个数,要分两步:第一步:先遍历链表中元素的个数,第二步:从头开始遍历,遍历到链表个数-k个数; 用两个指 ...

最新文章

  1. 助动词有哪些 do does did,本身不能单独做谓语需要与主要动词一起做谓语 情态动词must can need
  2. linux常用命令收集(持续中)
  3. VC检测OLE控件是否已经注册,并注册它
  4. 用户权限项目预测分析
  5. 外媒:高通指控苹果窃取其芯片机密信息!
  6. 【java】解析JToolBar类的使用
  7. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析
  8. PHP高级教程-高级过滤器
  9. python—tf.keras.backend.clear_session()
  10. 集成电路设计——闩锁效应
  11. 安卓apk360加固
  12. PL330 DMAC笔记(2) - DMAC接口,状态机,初始化,APB slave接口
  13. Cisco RV320未经身份验证的配置导出
  14. 存储器——嵌入式系统
  15. 前端学习——CSS布局
  16. 置液晶显示器的台式计算机,能为液晶显示器提供直流电的台式计算机电源的制作方法...
  17. php日历天气预报下载安装手机桌面_日历天气预报下载安装
  18. 瓷器进口关税多少及相关瓷器进口报关流程中会遇到哪些问题?
  19. 【u252】泽泽在巴西
  20. 如何完全禁止win10自动更新

热门文章

  1. Qt 调用Python引擎混合编程
  2. Vue.js CLI4 Vue.config.js标准配置 (最全注释)
  3. 一文了解类别型特征的编码方法
  4. java单例模式的实现方法_JAVA单例模式的几种实现方法
  5. django-form and fields validation
  6. [HNOI 2001]求正整数
  7. 最全面的Android Studio使用教程【申明:来源于网络】
  8. MS SQL SERVER数据库简单回顾
  9. easyUI 添加CheckBox选择到DataGrid
  10. 诗歌rials 之RJS的tips