【题目】:
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
【思路】:
使用三个指针进行实现。分别指向当前节点、前一个节点和后一个节点。前一个节点的指针是为让当前指针指向,后一个节点为了防止链表断开。
package com.offer.offer24;
/**
* @author zth
* @Date 2019-08-13 8:10
*/
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class ReverseList {
public static ListNode ReverseList(ListNode head) {
if (head == null){
return null;
}
ListNode PreNode =null;
ListNode node = head;
ListNode nextNode = head;
while (nextNode!=null){
node = nextNode;
nextNode = nextNode.next;
node.next = PreNode;
PreNode = node;
}
return node;
}
public static void main(String[] args){
ListNode node1=new ListNode(1);
ListNode node2=new ListNode(2);
ListNode node3=new ListNode(3);
ListNode node4=new ListNode(4);
node1.next=node1;
node2.next=node3;
node3.next=node4;
ListNode node = ReverseList(node1);
System.out.println(node.val);
}
}