LeetCode 206. 反转链表
题目描述
题目地址:LeetCode 206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
解题思路
思路一:翻转指针
代码实现
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* cur=head;
//cur前一节点
struct ListNode* pre=NULL;
//保存cur的下一个节点
struct ListNode* temp;
while(cur){
//保存cur的下一个节点
temp=cur->next;
//翻转操作(将cur的指针指向其前一节点pre)
cur->next=pre;
//更新pre和cur指针(pre和cur均往后移一位)
pre=cur;
cur=temp;
}
return pre;
}
运行结果
参考文章:
思路二:减少遍历节点数
代码实现
在这里插入代码片