Java反转单链表(code)

转载自:http://poly.iteye.com/blog/1748272

主要是面试中可能会经常碰上该类似操作,尤其是稍大点公司,面试官可能并不在乎你能不能搞定该题,但是这类型题目最是能体现程序员的思维状态 ---一个迷糊头脑的程序员 怎能立志改变这个世界。

/*** @author luochengcheng* 定义一个单链表*/
class Node {//变量private int record;//指向下一个对象private Node nextNode;public Node(int record) {super();this.record = record;}public int getRecord() {return record;}public void setRecord(int record) {this.record = record;}public Node getNextNode() {return nextNode;}public void setNextNode(Node nextNode) {this.nextNode = nextNode;}
}/*** @author luochengcheng*	两种方式实现单链表的反转(递归、普通)*	新手强烈建议旁边拿着纸和笔跟着代码画图(便于理解)*/
public class ReverseSingleList {/** * 递归,在反转当前节点之前先反转后续节点 */public static Node reverse(Node head) {if (null == head || null == head.getNextNode()) {return head;}Node reversedHead = reverse(head.getNextNode());head.getNextNode().setNextNode(head);head.setNextNode(null);return reversedHead;}/** * 遍历,将当前节点的下一个节点缓存后更改当前节点指针 *  */public static Node reverse2(Node head) {if (null == head) {return head;}Node pre = head;Node cur = head.getNextNode();Node next;while (null != cur) {next = cur.getNextNode();cur.setNextNode(pre);pre = cur;cur = next;}//将原链表的头节点的下一个节点置为null,再将反转后的头节点赋给head   head.setNextNode(null);head = pre;return head;}public static void main(String[] args) {Node head = new Node(0);Node tmp = null;Node cur = null;// 构造一个长度为10的链表,保存头节点对象head   for (int i = 1; i < 10; i++) {tmp = new Node(i);if (1 == i) {head.setNextNode(tmp);} else {cur.setNextNode(tmp);}cur = tmp;}//打印反转前的链表Node h = head;while (null != h) {System.out.print(h.getRecord() + " ");h = h.getNextNode();}//调用反转方法head = reverse2(head);System.out.println("\n**************************");//打印反转后的结果while (null != head) {System.out.print(head.getRecord() + " ");head = head.getNextNode();}}
}



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

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

相关文章

Spring中拦截/和拦截/*的区别 - 不能访问到返回的JSP - 访问静态资源(jpg,js等)

最近碰到了一个spring的web.xml无法跳转到index.html页面的小问题&#xff0c;查了之后从下面这篇文章中受益&#xff0c;特此转发&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 一、我们都知道在基于Spring的Application中&#xff0c;需要在web.xml中增加下面类似的…

net重载

先了解重载 重写 和多态性吧 &#xff0c;这三个基本不同概念。但是基本面试都会同一时间问&#xff0c;让你以为他们有联系呢。真坑。对新手来说 先说重载吧&#xff1a;用同样的名称。用不同的等数列表来创建多个方法和属性&#xff0c;在调用的时候可以适应不同参数的要求&a…

JavaScript 回调函数中的 return false 问题

今天一个同事问了我一个问题&#xff0c;就是在 Ajax 方法中&#xff0c;请求成功后&#xff08;success&#xff09;的回调函数中根据响应的值来判断程序是否继续执行&#xff0c;他不解的是在回调函数中已经 return false 了&#xff0c;但是 Ajax 方法外部的后续语句却仍然继…

AngularJs ngIf、ngSwitch、ngHide/ngShow

在组合这些ng指令写到一篇文章里的时候&#xff0c;基本是有规则的&#xff0c;本兽会将功能相似相近的一类整合到一篇文章&#xff0c;方便理解和记忆。 这篇的三个指令也都是对DOM元素的操作&#xff0c;页面上显示/隐藏的判断&#xff0c;添加/移除的判断。 ngIf ngIf指令会…

MySQL与MongoDB的区别

什么是MongoDB ?MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档&…

webService上传图片

1 webService 2 3 /// <summary>4 /// 上传图片webServer 的摘要说明5 /// </summary>6 [WebService(Namespace "http://tempuri.org/")]7 [WebServiceBinding(ConformsTo WsiProfiles.BasicProfile1_1)]8 [ToolboxItem(fal…

在陌生Linux环境查看Tomcat服务的方法

1.查看Tomcat进程 执行命令$ps -ef|grep tomcat 你就能找出tomcat占据的进程号&#xff0c;当然这要求tomcat启动了。 # ps -ef | grep tomcat 2.查看Tomcat占据的端口 执行命令$netstat -nat能列出tomcat占据的端口&#xff0c;8080及其它类似的端口是需要注意的。这命令也需要…

查看WEB服务器的连接数

查看WEB服务器的连接数 https://technet.microsoft.com/en-us/sysinternals/bb897437 tcpView转载于:https://www.cnblogs.com/daishuguang/p/4973342.html

JVM系列三:JVM参数设置、分析

转载自&#xff1a; http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数&#xff0c;可以极大的减少由于GC工作&#xff0c;而导致的程序运行中断方面的问题…

堆溢出,栈溢出

堆溢出:不断的new 一个对象&#xff0c;一直创建新的对象&#xff0c; 栈溢出&#xff1a;死循环或者是递归太深&#xff0c;递归的原因&#xff0c;可能太大&#xff0c;也可能没有终止。 在一次函数调用中&#xff0c;栈中将被依次压入&#xff1a;参数&#xff0c;返回地址&…

Information_Schema系统表

information_schema数据库是MySQL自带的&#xff0c;它提供了访问数据库元数据的方式。 元数据是关于数据的数据&#xff0c;如数据库名或表名&#xff0c;列的数据类型&#xff0c;或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。 在…