输入一个链表,反转链表后,输出链表的所有元素。就地逆转,头插法
思路:就地逆转,头插法
package com.mytest.mymain;
/*class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class ReverseListNode {
public static void main(String[] args) {
ListNode A=new ListNode(1);
ListNode B=new ListNode(2);
ListNode C=new ListNode(3);
ListNode D=new ListNode(4);
ListNode E=new ListNode(5);
A.next=B;
B.next=C;
C.next=D;
D.next=E;
ReverseListNode testListNode=new ReverseListNode();
ListNode ls=testListNode.ReverseList(A);
System.out.println(ls.next.val);
}
public ListNode ReverseList(ListNode head) {
if(head==null){
return null;
}
if(head.next==null){
return head;
}
ListNode newhead=head;
ListNode p=head.next,q=head.next;
newhead.next=null;
while(p.next!=null){
q=p.next;
p.next=newhead;
newhead=p;
p=q;
}
p.next=newhead;
newhead=p;
return newhead;
}
}