作者: 华丞臧.
专栏:【数据结构】
各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞+收藏+关注)。如果有错误的地方,欢迎在评论区指出。
推荐一款刷题网站 👉 LeetCode刷题网站
题目描述
给你单链表的头节点
head,请你反转链表,并返回反转后的链表。

解题思路
一个链表的节点中存放着下一个节点的地址,节点中next指针指向下一个节点;那么反转整个链表,也可以看做把链表中的next指针反转,而链表只能找到当前节点的下一个节点,所以我们需要两个指针一个ptr保存当前结点的前一个结点地址,一个cur保存当前节点地址,当然cur下一个节点也需要保存,依次反转最后cur就是新链表的表头。

代码实现
struct ListNode* reverseList(struct ListNode* head)
{
struct ListNode* cur = head;
if(head == NULL )
{
return head;
}
else if(head->next == NULL)
{
return head;
}
struct ListNode* ptr = head->next;
cur->next = NULL;
while(ptr)
{
struct ListNode* tmp = ptr->next;
ptr->next = cur;
cur = ptr;
ptr = tmp;
}
return cur;
}

本文详细介绍了如何解决LeetCode上的206题——反转链表。通过一个简单的解题思路和具体的C语言代码实现,展示了如何使用迭代法反转链表。文中还提供了在线刷题平台LeetCode的链接,供读者实践。
6257





