反转链表
一、题目
💨来源:力扣(LeetCode)
💨链接:206.反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
☀️示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
☀️示例 2:
输入:head = [1,2]
输出:[2,1]
☀️示例 3:
输入:head = []
输出:[]
☀️提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
二、思路分析
直接翻转原单链表箭头
类似于数组中的翻转数组
思路比较直接且好想,这次代码是我第一次只写了一次就运行成功了!
🐳🐳画图真的很重要很重要!!敲黑板!!
拿着草稿纸或者ipad画!!(以下用电脑上的iodraw画的)
🐳🐳但不如笔头来的快,草稿纸打草稿比啥电子软件都舒服
我们需要将以上 箭头全部翻转,最后的箭头让它消失
代码:
struct ListNode* reverseList(struct ListNode* head){
if(head == NULL)
{
return NULL;
}
struct ListNode* prev = NULL;
struct ListNode* pos = head;
struct ListNode* ahead = head->next;
while(ahead != NULL)
{
pos->next = prev;
prev = pos;
pos = ahead;
ahead = ahead->next;
}
pos->next = prev;
return pos;
}