链表中求倒数第几个元素并打印出来
//补充一下 链表的逆序操作 添加到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();}
}
链表中求倒数第几个元素并打印出来相关推荐
- 请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素
给定一个单向链表(长度未知),请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素. 实现这个算法,并为可能出现的特例情况安排好处理措施. 倒数第m个元素"是这样规定的:当m= ...
- LeetCode19. Remove Nth Node From End of List 删除链表中的倒数第n个位置的元素
前言 本文是LeetCode19. Remove Nth Node From End of List解法,这个题目需要删除链表中的倒数第n个位置的元素 代码 # -*- coding: utf-8 - ...
- 剑指 Offer 22(链表4).链表中的倒数第k个结点
剑指 Offer 22(链表4).链表中的倒数第k个结点 问题描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链 ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...
- python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法
本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...
- c语言学习-在一个三行三列的矩阵中求出数值最大的元素及其行/列下标并打印输出
在一个三行三列的矩阵中求出数值最大的元素及其行/列下标并打印输出 程序流程图: 代码: #include<stdio.h> void main() {int a[3][3]; int i= ...
- c语言单链表删除倒数第k个数,在单链表中删除倒数第k个节点
实现方式很多,在这里只说两种实现方式.看不懂时候,大家可以画画图,对理解为什么很有帮助. 第一种方式: 1.首先判断K值和链表是否为空,如果k<=0,或链表为空,直接返回head: 2.满足上面 ...
- 数据结构初阶(4)(OJ练习【判断链表中是否有环、返回链表入口点、删除链表中的所有重复出现的元素】、双向链表LinkedList【注意事项、构造方法、常用方法、模拟实现、遍历方法、顺序表和链表的区别)
接上次博客:数据结构初阶(3)(链表:链表的基本概念.链表的类型.单向不带头非循环链表的实现.链表的相关OJ练习.链表的优缺点 )_di-Dora的博客-CSDN博客 目录 OJ练习 双向链表--Li ...
- 单向链表中查找倒数第K个数
问题 单向链表如果要找某一元素或者遍历链表,只能从头节点开始,所以如果我们用普通方法查找倒数第K个数,要分两步:第一步:先遍历链表中元素的个数,第二步:从头开始遍历,遍历到链表个数-k个数; 用两个指 ...
最新文章
- 助动词有哪些 do does did,本身不能单独做谓语需要与主要动词一起做谓语 情态动词must can need
- linux常用命令收集(持续中)
- VC检测OLE控件是否已经注册,并注册它
- 用户权限项目预测分析
- 外媒:高通指控苹果窃取其芯片机密信息!
- 【java】解析JToolBar类的使用
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析
- PHP高级教程-高级过滤器
- python—tf.keras.backend.clear_session()
- 集成电路设计——闩锁效应
- 安卓apk360加固
- PL330 DMAC笔记(2) - DMAC接口,状态机,初始化,APB slave接口
- Cisco RV320未经身份验证的配置导出
- 存储器——嵌入式系统
- 前端学习——CSS布局
- 置液晶显示器的台式计算机,能为液晶显示器提供直流电的台式计算机电源的制作方法...
- php日历天气预报下载安装手机桌面_日历天气预报下载安装
- 瓷器进口关税多少及相关瓷器进口报关流程中会遇到哪些问题?
- 【u252】泽泽在巴西
- 如何完全禁止win10自动更新