Java反转单链表

网友投稿 214 2022-12-01

Java反转单链表

class Node { private int data; private Node nextNode; public Node(int data) { this.data = data; } public int getData() { return data; } public void setData(int data) { this.data = data; } public Node getNextNode() { return nextNode; } public void setNextNode(Node nextNode) { this.nextNode = nextNode; }}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 || null == head.getNextNode()) { return head; } Node node1 = head; Node node2 = head.getNextNode(); head.setNextNode(null); while (null != node2) { node1 = node2; node2 = node2.getNextNode(); node1.setNextNode(head); head = node1; } return head; } public static void main(String[] args) { Node head = new Node(0); Node cur = head; Node tmp = null; // 构造一个长度为10的链表,保存头节点对象head for (int i = 1; i < 10; i++) { tmp = new Node(i); cur.setNextNode(tmp); cur = tmp; } //打印反转前的链表 Node h = head; while (null != h) { System.out.print(h.getData() + " "); h = h.getNextNode(); } //调用反转方法 //head = reverse(head); head = reverse2(head); System.out.println("\n**************************"); //打印反转后的结果 while (null != head) { System.out.print(head.getData() + " "); head = head.getNextNode(); } }}

运行结果:

0 1 2 3 4 5 6 7 8 9

**************************

9 8 7 6 5 4 3 2 1 0

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java笔记13:统计文件中每个字符出现的次数
下一篇:java和Spring中观察者模式的应用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~