法
一、反序输出,一般想到堆栈,先进后出。
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList printListFromTailToHead(ListNode listNode) {
//创建一个ArrayList 作为输出
ArrayList out = new ArrayList<>();
//链表头给 cur
ListNode cur = listNode;
//创建一个栈对象
Stack stack = new Stack();
while(cur != null){
//把链表推入堆栈
stack.push(cur);
//取下一个数
cur = cur.next;
}
//链表不为空时,出栈元素的值逐个加入到Out
while(stack.size()>0){
out.add(stack.pop().val);
}
return out;
}
}
法
二、改变指针指向
public class Solution {
public ListNode ReverseList(ListNode head) {
//pre指针:用来指向反转后的节点,初始化为null
ListNode pre = null;
//当前节点指针
ListNode cur = head;
//循环迭代
while (cur != null) {
//先将当前cur(未改变指向前)的next保存到tmp中
ListNode tmp = cur.next;
//改变指针,使pre指向cur的下一位
cur.next = pre;
//更新pre为当前的cur值
pre = cur;
//原本cur的下一个节点保存在了tmp中,现在给cur
cur = tmp;
}
return pre;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)