206. 反转链表 - 力扣(LeetCode)https://leetcode.cn/problems/reverse-linked-list/description/思路:
问题1:
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode ListNode;
struct ListNode* reverseList(struct ListNode* head) {
//处理空链表的情况
if(!head)
{
return NULL;
}
//定义三个指针
ListNode* prev = NULL;
ListNode* ptail = head;
ListNode* Next = ptail->next;
while(ptail)
{
//ptail的next指针指向前一个节点
ptail->next = prev;
//
prev = ptail;
ptail = Next;
//不能对空指针解引用操作
//也就是说Next指针会提前指向空,所以在解引用之前要进行判断
if(Next)//Next指针为空时,就不能找下一个节点了
Next = Next->next;
}
//此时prev就是链表反转后新的头节点
return prev;
}
运行结果: