剑指Offer 系列 剑指 Offer 24: 反转链表

题目描述:

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

思路分析:

就是最简单的方法,遍历链表中的每个节点,然后使用头插法插入新的链表中,最后返回新的链表

重点代码(也就是头插法变一下形)

head3 = head->next;       //先将需要反转的链表x从下一个节点保存起来y
head ->next = head1;          //将该节点下一个节点变成新的链表z
head1= head;              //z重新取代新链表的位置
head = head3;         //将保存的y重新赋值给需要反转的链表以供下次循环

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *head1 = NULL;
        ListNode *head3 = NULL;
        while(head)
        {
            head3 = head->next;
            head ->next = head1;
            head1= head;
            head = head3;
        }
        return head1;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_46423166/article/details/110799717