思路
这种反转链表首先会想到借助栈来实现。按照从头到尾的顺序压栈,然后弹栈,结果就是一个反转链表。
这里我写了两个方法,异曲同工。
代码实现
import java.sql.Statement; import java.util.Stack; public class Solution { public ListNode ReverseList(ListNode head) { 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()) { node.next = stack.pop(); node = node.next; } node.next = null; return dummy; } public ListNode ReverseList2(ListNode head) { Stack<Integer> stack = new Stack<>(); if (head == null) { return null; } while (true) { if (head.next == null) { stack.push(head.val); break; } stack.push(head.val); head = head.next; } if (stack.isEmpty()) { return null; } ListNode node = new ListNode(stack.pop()); ListNode dummmy = node; while (!stack.isEmpty()) { node.next = new ListNode(stack.pop()); node = node.next; } return dummmy; } public static void main(String[] args) { ListNode node = null; Solution solution = new Solution(); solution.ReverseList2(node); } } class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }