jzoffer-15:反转链表
程序员文章站
2022-05-12 22:23:56
...
package com.fjf.test;
import com.fjf.test.Test03.ListNode;
/**
*
* 反转链表
* @author fjf
* 2018年8月19日 16:06:51
* 输入一个链表,反转链表后,输出新链表的表头。
*
*/
public class Test15 {
public static void main(String[] args) {
Mylink l = new Mylink();
for (int i = 0; i < 7; i++) {
l.addLink(i);
}
System.out.println("链表反转前:" );
l.print(l.head);
System.out.println("------------" );
Solution s = new Solution();
ListNode newhead = s.ReverseList(l.head);
System.out.println("链表反转后:" );
l.print(newhead);
}
static class Solution{
public ListNode ReverseList(ListNode head) {
if(head==null){
return null;
}
ListNode pre = null;
ListNode next = null;
while(head!=null){
next = head.next;
head.next = pre;
pre=head;
head = next;
}
return pre;
}
}
//定义链表
static class Mylink{
public ListNode head;
public ListNode current;
public void addLink(int data){
if(head==null){
head = new ListNode(data);
current = head;
}else{
current.next = new ListNode(data);
current = current.next;
}
}
public void print(ListNode head){
if(head == null){
return;
}
current = head;
while(current!=null){
System.out.println(current.val);
current = current.next;
}
}
}
//定义节点
static class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
}