/**
* @date: 2018/8/11
* @description: leetcode第206题 翻转单链表
* 地址:https://leetcode-cn.com/problems/reverse-linked-list/description/
*/
public class ReverseList{
//链表结构
public static class ListNode{
int val;
ListNode next;
ListNode(int val){
this.val = val;
}
}
public ListNode reverseList(ListNode head){
if(head == null){
return null;
}
ListNode newHead = null;//用于遍历的指针
while(head != null){//遍历原链表,每遍历一个节点就将其反转
ListNode next = head.next;//对下一个要遍历的节点进行备份
head.next = newHead;//反转
newHead = head;
head = next;
}
return newHead;
}
//测试函数
public static void main(String[] args){
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
printHead(head);
System.out.println();
System.out.print("反转后:");
ListNode newHead = new ReverseList().reverseList(head);
printHead(newHead);
}
//打印链表的函数
private static void printHead(ListNode head){
while(head != null){
System.out.print(head.val + "->");
head = head.next;
}
System.out.print("null");
}
}
运行结果