之前在朋友的推荐下自己购买服务器搭建了个博客,但是到期后就不用了。时隔这么久再次开始,希望自己可以坚持下去。
今天学习的内容在准备考研时也学习过,主要是熟悉熟悉。
迭代器实现
package test;
public class ReverseList {
static class ListNode{
int val;
ListNode next;
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
//迭代
public static ListNode iterate(ListNode head) {
ListNode prev=null,next;
ListNode curr = head;
while(curr!=null) {
next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
public static void main(String[] args) {
ListNode node5 = new ListNode(5,null);
ListNode node4 = new ListNode(4,node5);
ListNode node3 = new ListNode(3,node4);
ListNode node2 = new ListNode(2,node3);
ListNode node1 = new ListNode(1,node2);
ListNode prev = iterate(node1) ;
System.out.println(prev.val);
}
}
递归方法实现
package test;
public class ReverseList {
static class ListNode{
int val;
ListNode next;
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
//递归
public static ListNode recursion(ListNode head) {
//找到最后一个元素
if(head == null||head.next == null) {
return head;
}
ListNode new_head = recursion(head.next);
head.next.next = head;
head.next = null;
return new_head;
}
public static void main(String[] args) {
ListNode node5 = new ListNode(5,null);
ListNode node4 = new ListNode(4,node5);
ListNode node3 = new ListNode(3,node4);
ListNode node2 = new ListNode(2,node3);
ListNode node1 = new ListNode(1,node2);
ListNode new_head = recursion(node1);
System.out.println(new_head.val);
}
}