来自左神书中的一道题,在左神核心代码的基础上,添加了链表的构建和输出操作,将这道题完善成了一个小Demo,和各位共勉。
题目:
* 反转单向链表
这道题太常见了,必知必会。
核心算法:
public static Node reverseList(Node head){
Node pre = null;
Node next = null;
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
测试代码:
public static void main(String[] args) {
//构建链表0-9
Node head1 = new Node(0);
Node temp1 = head1;
for(int i = 1;i < 5;i++){
temp1.next = new Node(i);
temp1 = temp1.next;
}
printList(head1);
head1 = reverseList(head1);
printList(head1);
}
输出结果:
0 1 2 3 4
4 3 2 1 0
原创不易,转载请注明出处哈。
权兴权意
http://blog.csdn.net/hxqneuq2012/article/details/53119326
完整源代码:
public class ReverseListTest {
/**
* 权兴权意-2016.11.10
* 反转单向链表
*/
public static void main(String[] args) {
//构建链表0-9
Node head1 = new Node(0);
Node temp1 = head1;
for(int i = 1;i < 5;i++){
temp1.next = new Node(i);
temp1 = temp1.next;
}
printList(head1);
head1 = reverseList(head1);
printList(head1);
}
public static Node reverseList(Node head){
Node pre = null;
Node next = null;
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
//打印链表
public static void printList(Node head){
Node temp = head;
while(temp != null){
System.out.print(temp.value + " ");
temp = temp.next;
}
System.out.println();
}
}