Java单链逆转

时间:2022-09-24 09:02:20

本文介绍两种方法单向链表反转。记录,如下面:

1.

package com.leetcode;

public class ListReverse {

	public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
node1.next = node2;
node2.next = node3;
node3.next = node4; Node head = reverse(node1);
while(head != null){
System.out.println(head.val);
head = head.next;
} } public static Node reverse(Node head){
Node cur = head, post = head.next;
head.next = null;
while(post != null){
Node tmp = post;
post = post.next;
tmp.next = cur;
cur = tmp;
}
return cur;
} static class Node{
int val;
Node next;
Node(int val){
this.val = val;
this.next = null;
}
} }

执行结果为:

4
3
2
1

2.

package com.leetcode;

public class ListReverse {

	public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
node1.next = node2;
node2.next = node3;
node3.next = node4; Node head = reverse(node1);
while(head != null){
System.out.println(head.val);
head = head.next;
} } public static Node reverse(Node head){
Node dummy = new Node(-1);
dummy.next = head;
Node pre = dummy, cur = head, post = head.next;
while(post != null){
cur.next = post.next;
post.next = pre.next;
pre.next = post;
post = cur.next;
}
return dummy.next;
} static class Node{
int val;
Node next;
Node(int val){
this.val = val;
this.next = null;
}
} }

执行结果为:

4
3
2
1

版权声明:本文博主原创文章。博客,未经同意不得转载。