题解 | #反转链表#

关于反转链表的题型解析

每日刷题个人总结:反转链表作为oj中最基础的题型,可以使用的方法有很多,笔者暂且只想出以下两种方案以供参考

1.利用栈的先进后出特性

代码如下:

  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 dump=node;//头结点
        while (!stack.isEmpty()){
            ListNode tempNode=stack.pop();
            node.next=tempNode;
            node=node.next;
        }
        node.next=null;
        return dump;
    }

2.利用递归

代码如下:
public ListNode ReverseList(ListNode head) {
       if (head.next==null||head==null){
           return head;
        }
       ListNode al=head.next;
       ListNode SERVER=ReverseList(al);
       al.next=head;
       head.next=null;
       return SERVER;
    }

3.利用虚拟节点

   ListNode pre=null;
            ListNode cur=head;
            while (cur!=null){
                ListNode CurNext=cur.next;
                cur.next=pre;
                pre=cur;
                cur=CurNext;
            }
            return pre;
    }
如上


#交流群#
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 16:06
已编辑
快手电商 后端 23k-35k
点赞 评论 收藏
分享
贪食滴🐶:你说熟悉扣篮的底层原理,有过隔扣职业球员的实战经验吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务