链表的基本操作 java_Java_实现单链表-基本操作

1 packageofficeCoding;2

3 importjava.util.ArrayList;4 importjava.util.Stack;5

6 /**

7 * 从尾到头遍历链表 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList8 *9 *@authorAdministrator10 */

11 class ListNode {//单链表节点构建

12 intval;13 ListNode next = null;14

15 ListNode(intval) {16 this.val =val;17 }18 }19

20 public classPro_03 {21

22 static ListNode head = null;//创建一个头节点

23

24 public static voidmain(String[] args) {25 addNode(5);26 addNode(8);27 ArrayList list =printListFromTailToHead(head);28 System.out.println(list);29 }30

31 //队列和栈是一对好基友,从尾到头打印链表,当然离不开借助栈的帮忙啦32 //所以,先把链表里的东西,都放到一个栈里去,然后按顺序把栈里的东西pop出来,就这么简单

33 public static ArrayListprintListFromTailToHead(ListNode listNode) {34 Stack stack = new Stack();35 while (listNode != null) {36 stack.push(listNode.val);37 listNode =listNode.next;38 }39 ArrayList list = new ArrayList();40 while (!stack.isEmpty()) {41 list.add(stack.pop());42 }43 returnlist;44 }45

46 //input

47 public static void addNode(intd) {48 ListNode newNode = newListNode(d);49 if (head == null) {50 head =newNode;51 }52 ListNode tmp =head;53 while (tmp.next != null) {54 tmp =tmp.next;55 }56 tmp.next =newNode;57 }58

59 //delete

60 public boolean deleteNode(intindex) {61 if (index < 1 || index >length()) {62 return false;//如果当前index在链表中不存在

63 }64 if (index == 1) {//如果index指定的是头节点

65 head =head.next;66 return true;67 }68 int i = 2;69 ListNode preNode = head;//前一个节点(从头节点开始)

70 ListNode curNode = preNode.next;//当前节点

71 while (curNode != null) {72 if (i ==index) {73 preNode.next = curNode.next;//删除当节点,前节点连接到下节点

74 return true;75 }76 preNode =curNode;77 curNode =curNode.next;78 i++;79 }80 return false;81 }82

83 //返回节点长度

84

85 public intlength() {86 int length = 0;87 ListNode tmp =head;88 while (tmp != null) {89 length++;90 tmp =tmp.next;91 }92 returnlength;93 }94

95 //链表反转

96

97 publicListNode ReverseIteratively(ListNode head) {98 ListNode pReversedHead =head;99 ListNode pNode =head;100 ListNode pPrev = null;101 while (pNode != null) {102 ListNode pNext =pNode.next;103 if (pNext == null) {104 pReversedHead =pNode;105 }106 pNode.next =pPrev;107 pPrev =pNode;108 pNode =pNext;109 }110 this.head =pReversedHead;111 return this.head;112 }113

114 //查找单链表的中间节点

115

116 publicListNode SearchMid(ListNode head) {117 ListNode p = this.head, q = this.head;118 while (p != null && p.next != null && p.next.next != null) {119 p =p.next.next;120 q =q.next;121 }122 System.out.println("Mid:" +q.val);123 returnq;124 }125

126 //查找倒数 第k个元素

127

128 public ListNode findElem(ListNode head, intk) {129 if (k < 1 || k > this.length()) {130 return null;131 }132 ListNode p1 =head;133 ListNode p2 =head;134 for (int i = 0; i < k; i++)//前移k步

135 p1 =p1.next;136 while (p1 != null) {137 p1 =p1.next;138 p2 =p2.next;139 }140 returnp2;141 }142

143 //排序

144

145 publicListNode orderList() {146 ListNode nextNode = null;147 int tmp = 0;148 ListNode curNode =head;149 while (curNode.next != null) {150 nextNode =curNode.next;151 while (nextNode != null) {152 if (curNode.val >nextNode.val) {153 tmp =curNode.val;154 curNode.val =nextNode.val;155 nextNode.val =tmp;156 }157 nextNode =nextNode.next;158 }159 curNode =curNode.next;160 }161 returnhead;162 }163

164 //从尾到头输出单链表,采用递归方式实现

165

166 public voidprintListReversely(ListNode pListHead) {167 if (pListHead != null) {168 printListReversely(pListHead.next);169 System.out.println("printListReversely:" +pListHead.val);170 }171 }172

173 //判断链表是否有环,单向链表有环时,尾节点相同

174

175 public booleanIsLoop(ListNode head) {176 ListNode fast = head, slow =head;177 if (fast == null) {178 return false;179 }180 while (fast != null && fast.next != null) {181 fast =fast.next.next;182 slow =slow.next;183 if (fast ==slow) {184 System.out.println("该链表有环");185 return true;186 }187 }188 return !(fast == null || fast.next == null);189 }190

191 //找出链表环的入口

192

193 publicListNode FindLoopPort(ListNode head) {194 ListNode fast = head, slow =head;195 while (fast != null && fast.next != null) {196 slow =slow.next;197 fast =fast.next.next;198 if (slow ==fast)199 break;200 }201 if (fast == null || fast.next == null)202 return null;203 slow =head;204 while (slow !=fast) {205 slow =slow.next;206 fast =fast.next;207 }208 returnslow;209 }210 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 不同包_Java项目中不同包的命名及作用

①在vo或者domain包中定义bean类&#xff0c;主要是类的属性&#xff0c;这个类跟数据库中的某个表的字段一致。②dao包中主要是存放用于操作数据库完成业务逻辑方法的接口。③dao.impl这个包存放着这样的一个类&#xff0c;这个类主要是实现dao中定义的方法&#xff0c;完成具…

java项目怎么导出成jar_如何在eclipse将程序导出成jar文件

在编写好的java包上右键--export。下面是简单的一个java小程序&#xff0c;可以用来做测试public class Main { public static void main(String[] args) { JFrame frame new JFrame(); JPanel panel new JPanel(); JTextArea textArea new JTextAr…

java门槛_Java的入行门槛高吗?对学历有限制吗?

学习Java的热潮越来越高涨&#xff0c;除了转行而来的人&#xff0c;很多刚毕业的学生也加入到其中。很多人都觉得学习Java需要有一个高学历作为基础&#xff0c;一些专科生在学习之前会犹豫&#xff0c;他们是否能学习Java&#xff1f;学历会成为他们学习Java的限制吗&#xf…

grade java_Gradle Java 构建入门

Java 构建入门Java 插件如你所见&#xff0c;Gradle 是一个通用工具。它可以通过脚本构建任何你想要实现的东西&#xff0c;真正实现开箱即用。但前提是你需要在脚本中编写好代码才行。大部分 Java 项目基本流程都是相似的&#xff1a;编译源文件&#xff0c;进行单元测试&…

java 小数处理_java 小数点处理

public class Test {public static void main(String[] args) {double i 3.856;// 舍掉小数取整System.out.println("舍掉小数取整:Math.floor(3.856)" (int) Math.floor(i));// 四舍五入取整System.out.println("四舍五入取整:(3.856)" new BigDecimal(…

java settings文件夹_windows下打开.m2文件夹,没有找到setting.xml

Frank作家2018-03-15 10:07已采纳那就自己创建一个手动创建本地仓库的存放路径&#xff0c;例如&#xff1a;D:\Java\m2\repository&#xff1b;在windows的环境变量中增加了新的用户变量M2_REPO&#xff0c;其对应的值为D:\Java\m2\repository(Maven仓库的本地存放路径)&#…

java hs err pid_JAVA 奔溃 生成hs_err_pid****的文件,求大神看看

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼运行手机模拟器 奔溃产生hs_err_pid**** 的文件&#xff0c;有大神知道这样的情况会是原因不电脑重装还是一样&#xff0c; 我在想&#xff0c; 是不是电脑硬件的问题&#xff0c; 我试了&#xff0c;硬盘&#xff0c;CPU&#xff…

java 播放.pcm文件_如何在浏览器中播放pcm音频

本文记录一点工作经历&#xff0c;探讨音频文件的格式更多访问我的博客前言最近在整理音视频编程的知识&#xff0c;回忆起半年多&#xff0c;有一次需求是在后台播放某来源的 pcm 文件&#xff0c;当时处理方法用了点技巧&#xff0c;记录下来背景&#xff1a;业务需求&#x…

mysql 完全备份恢复吗_mysql完全备份与恢复

备份的重要性&#xff1a;在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种.硬件故障软件故障自然灾害误操作 (占比最大)备份类型&#xff1a;物理和逻辑角度&#xff1a;物理备份---指对数据库操作系统的物理文件的备份逻辑备份---指对数据…

scala与java的区别_Scala学习笔记及与Java不同之处总结

Scala与Java具有许多相似之处&#xff0c;但又有许多不同。这里主要从一个Java开发人员的角度&#xff0c;总结在使用Scala的过程中所面临的一些思维转变。这里只是总结了部分两种语言在开发过程中的不同&#xff0c;以后会陆续更新一些切换后在开发过程中值得注意的地方。下面…

ubuntu mysql medium_ubuntu mysql远程连接+phpmyadmin安装

文章目录[隐藏]一、如何让ubuntu上的mysql允许远程连接二、ubuntu如何安装phpmyadmin一、如何让ubuntu上的mysql允许远程连接进入MySQL&#xff0c;执行如下命令:use mysql; GRANT ALL PRIVILEGES ON *.* TO username% IDENTIFIED BY password WITH GRANT OPTION; flush privil…

centos6.5搭建mysql主从_mysql 主从配置,主-》windows,从-》centos6.5

1.虚拟机配置的主从关系。win7 ip地址192.168.52.102&#xff0c;虚拟机ip 192.168.184.128。docs进入主服务器(master)mysql目录下&#xff0c;添加用户&#xff0c;然后执行mysql>create user dba192.168.184.128 identified by 123456 &#xff0c;然后grant replication…

java 定时关机_「window定时关机命令」电脑定时关机命令,这个方法适用于win7及以下系统 - seo实验室...

window定时关机命令上班族朋友们有没有碰到一种情况&#xff1a;临时需要外出&#xff0c;又不确定是否还要回来&#xff0c;因此办公室的电脑关与不关&#xff0c;小小的纠结了一下。以下方法或者可以帮你化解这个小纠结。定时关机且可以回来时取消(本法适用于 win7及以下系统…

java白色_java-将精灵颜色更改为白色

如果要将精灵中所有形状的颜色更改为白色,则唯一的方法是使用像素着色器并将所有非黑色的片段设置为黑色(我假设黑色在您的游戏中呈现为透明) )到白色.像这样&#xff1a;varying vec4 v_color;varying vec2 v_texCoords;uniform sampler2D u_texture;void main() {vec4 colorv…

彩票模拟选号程序java_java课程设计-彩票购买抽奖程序

彩票抽奖程序[TOC]###可实现功能&#xff1a;允许注册用户&#xff0c;用户信息包括用户id,用户名&#xff0c;密码&#xff0c;账户金额&#xff0c;电话号码等属性。允许注册用户购买彩票&#xff1a;手动选号、随机选号&#xff0c;并允许设置投注数。抽奖功能&#xff1a;要…

java生成word文件带上页码,使用apache poi api创建Word文档时,如何以Y的X格式添加页码?...

Is there any method specified in POI API to get the total number of pages, I am able to add page number in the footer of the document but i am not able to add the total number of pages value.解决方案Page count in Word is dependent of much things like font …

java给你的初步印象_Java之初印象

Java语言的跨平台性:Java语言的编程过程:只要实现了特定平台下的解释器程序(JVM),Java字节码就能通过解释器程序在该平台下运行,这是java跨平台的根本,当前并不是在所有平台下都有相应的Java解释器程序,这也是Java并不是在所有平台下都能运行的原因,它只能在实现了Java解释器程…

java 字符串实例_Java字符串实例

需求1&#xff1a;自己实现trim的方法。需求2&#xff1a; 获取上传文件名 "D:\\20120512\\day12\\Demo1.java"。需求3&#xff1a;将字符串对象中存储的字符反序。 新中国好 -----> 好国中新需求4&#xff1a; 求一个子串在整串中出现的次数 。public cl…

java过滤器场景_java servlet过滤器应用场景

1、统一POST请求中文字符编码的过滤器如何 实现&#xff1a;将每个Servlet共有的代码提取出来。2、禁止浏览器缓存所有动态页面的过滤器如何 实现&#xff1a;response.setDateHeader("Expires",-1);response.setHeader("Cache-Control","no-cache&qu…

java appender_log4j的Appenders配置方法

因为是刚开始使用log4j&#xff0c;很多配置方面的东西都不懂&#xff0c;记录下。下面是我用sts(spring tool suite)新建spring mvc项目的时候&#xff0c;帮我自动生成的一个log4j.xml配置文件。我要说的就是appenders中的配置内容输出方式&#xff1a;org.apache.log4j.cons…