如何反转单链表

发布于 2020-01-28 21:52:54
关注者
0
被浏览
445
1 个回答
  • 面试哥
    面试哥 2020-01-28
    为面试而生,有面试问题,就找面试哥。

    考察点:链表

    ListNode
    reverseList(ListNode* head) {
            if(head == nullptr || head->next ==nullptr)
                return head;
            ListNode* p;
            ListNode* q;
            ListNode* r;
            p = head;
            q = head->next;
            head->next = nullptr;//旧的头指针是新的尾指针 指向NULL
            while(q){
                r = q->next;//用来保存下一步要处理的指针
                q->next = p;//p q 交替处理 进行反转单链表
                p = q;
                q = r;
            }
            head = p;//最后的q必定指向NULL,p就成了新链表的头指针
            return head;
    }
    
    

     

     

推荐阅读
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看