题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode ReverseList (ListNode head) {
// write code here
Stack<ListNode> stack = new Stack<>();
while(head != null){
stack.push(head);
head = head.next;
}
if(stack.isEmpty()){
return null;
}
ListNode node = stack.pop();
ListNode dummy = node;
while(!stack.isEmpty()){
ListNode temNode = stack.pop();
node.next = temNode;
node = node.next;
}
node.next = null;
return dummy;
}
}
1.使用栈先进后出的思想。Stack<ListNode> stack = new Stack<>()
2.然后把链表里的元素都存放在栈中
3.先保留头节点,一会直接打印
4.将node节点赋值并且穿起来,最后返回dummy即可
查看1道真题和解析