算法-leetcode-206.反转链表

Posted xiaoshuai666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法-leetcode-206.反转链表相关的知识,希望对你有一定的参考价值。

题目链接:反转链表
主要是弄清楚几个变量该怎么交换值即可:
c语言版本:

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

struct ListNode* reverseList(struct ListNode* head)
    //可以在开始的时候处理下空链表和只有一个元素的情况,直接返回就行,循环也能处理这两种情况,所以就省掉了对应的代码,看上去更简洁
    struct ListNode *pre = NULL, *tmp, *cur = head;
    while (cur) 
        tmp = cur->next;
        cur->next = pre;
        pre = cur;
        cur = tmp;
    
    return pre;

使用递归方法:

struct ListNode* reverseList(struct ListNode* head)
    if (!head || !head->next) 
        return head;
    
    struct ListNode* p = reverseList(head->next);
    head->next->next = head;
    head->next = NULL;
    return p;

以上是关于算法-leetcode-206.反转链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode206.反转链表

[LeetCode] 206. 反转链表

[JavaScript 刷题] 链表 - 反转链表, leetcode 206

[JavaScript 刷题] 链表 - 反转链表, leetcode 206

每天一道面试题LeetCode 206 -- 反转链表

图解 LeetCode206:反转吧,链表!