首页 > 代码库 > #206 反转链表

#206 反转链表

思路

1. 使用三个指针,一个是新的链表头newHead,一个是遍历原链表的cur,newHead是cur的前一个节点

2. cur不断向前,并把cur->next 指向newHead,逐个反转

3. 第三个指针,tmp,用于记录原来的遍历方向,即原cur->next

 

代码

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *cur, *newHead;
        cur = head;
        newHead = NULL;
        while (cur) {
            ListNode *tmp = cur->next;
            cur->next = newHead;
            newHead = cur;
            cur = tmp;
        }
        return newHead;
    }
};

 

#206 反转链表