题解 | #反转链表#
反转链表
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;//返会头节点
}
