单链表反转

单链表:head->1->2->3->4->5,反转后:head->5->4->3->2->1,用代码实现。

这个题非常简单,也比较常考,基本思路就是将链表第一个元素后的元素不停的移动到head后。例子如下:

head->1->2->3->4->5
head->2->1->3->4->5
head->3->2->1->4->5
head->4->3->2->1->5
head->5->4->3->2->1

代码实现:

struct Node
{
    int val;
    struct Node *next;
};

void reverseLinkedList(struct Node *head)
{
    struct Node *first = head->next;
    if(first != NULL)
    {
        while(first->next != NULL)
        {
            struct Node *node = first->next;
            first->next = node->next;
            node->next = head->next;
            head->next = node;
        }
    }
}

当然其他方法也有很多,也都不难理解。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap