leetcode206 反转链表

78 阅读1分钟

一 问题

二 代码

     //方法一
     var reverseList = function(head) {
         //如果链表为空,返回链表
        if(head===null) return head;
         //定义反转链表的头结点
         //第一个节点的值初始化为原链表第一个节点的值,之后每次往这个节点前插入新节点 
        let newhead=new ListNode(head.val);
         //p节点用来遍历原链表
        let p=head.next;
        while(p){
           //生成一个新节点
           let q=new ListNode(p.val);
           //将新节点插入链表头部
           q.next=newhead;
           newhead=q;
           //p后移,准备下一轮插入新节点
           p=p.next;
        }
        return newhead;
     };
     
     //方法二
     var reverseList = function(head) {
        let p=null;
        //从头开始遍历链表节点
        let temp=head;
        while(temp){
            let post=temp.next;
            temp.next=p;
            p=temp;
            temp=post;
        }
        return p;
      };