206. 反转链表

LeetCode 206. 反转链表

题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例

输入: head = [1,2,3,4,5]

输出: [5,4,3,2,1]

解题模版

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* reverseList(struct ListNode* head){
}

解题思路

  1. 遍历每个节点, 将节点next指向上一个节点。

解答

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* reverseList(struct ListNode* head){
    struct ListNode *p = NULL;
    struct ListNode *c = head;
    while(c) {
        struct ListNode *t = c;
        c = c->next;
        t->next = p;
        p = t;
    }
    return p;
}