力扣206 反转链表

1、反转链表的常见几种:

头插法;双指针方法;

头插法创建一个新节点再头插比较合适;如果在原来的链表头插法,要对第一个元素的next在适当的时候变为NULL。

双指针的方法比较好用,用两个指针一前一后实现链表反转。

双指针:

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* pre=NULL;                 
        ListNode* p=head;
        while(p){
            ListNode* next=p->next;
            p->next=pre;
            pre=p;
            p=next;
        }
        return pre;
    }
};

新建节点头插:

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* n1=new ListNode(0,NULL);     //新建的是节点
        ListNode* p=head;                      //新建的是指针
        while(p){
            ListNode* m=p->next;          
            ListNode*q =n1->next;
            n1->next=p;
            p->next=q;
            p=m;
        }
        return n1->next;
    }
};

 

posted @ 2023-03-17 14:16  我的秘密小屋  阅读(15)  评论(0)    收藏  举报