力扣题里面的头结点是第一个结点,并不是通常意义上的首个无数值意义的结点
代码如下
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//反转链表使用双指针法
struct ListNode* reverseList(struct ListNode* head) {
//第一步 算法健壮性
if(head==NULL){
return NULL;
}
//第二步 创建遍历双指针
struct ListNode *pre=NULL,*p=head;
//第三步 p指针非空时往后遍历同时修改指针方向
while(p!=NULL){
struct ListNode *temp=p->next;
p->next=pre;
pre=p;
p=temp;
}
//第四步 p指针为空时 pre为第一个结点 使head指向pre
return pre;
}