题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
利用栈的特性,来遍历取出链表的值,后入栈。出栈时即为反顺序,建立新链表即可。
public ListNode ReverseList(ListNode head) { //判断是否为空。 if(head==null){ return head; } //设计一个指引节点pointer,方便遍历 ListNode pointer=head; //设计一个栈结构stack,方便取值 Stack<Integer> stack=new Stack(); while(pointer!=null){ //依次将其节点值入栈保存,目的是其出栈时顺序是相反的,懒得排序了,我们直接拿值即可 stack.push(pointer.val); pointer=pointer.next; } //出栈第一个值,newHead作为首节点 ListNode newHead=new ListNode(stack.pop()); pointer = newHead;//设计一个指引节点pointer,方便遍历 while (!stack.isEmpty()){ int pop = stack.pop(); ListNode node = new ListNode(pop); //生成新的节点node,将出栈值作为其val pointer.next=node; //把新节点连起来 pointer=pointer.next; //当前节点往后移动 } return newHead;//返会头节点 }