题解 | #反转链表#

反转链表

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;//返会头节点
    }


#剑指offer##21天打卡剑指offer#
全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务