题解 | 反转链表
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
#include<stdio.h>
#include<stdlib.h>
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
/*方法一struct ListNode* ReverseList(struct ListNode* head ) {
struct ListNode*first=NULL;
struct ListNode*second=head;
struct ListNode*third;
while(second!=NULL){
third=second->next;
second->next=first;
first=second;
second=third;
}
return first;
}*///三指针迭代法
/*方法二struct ListNode* ReverseList(struct ListNode* head){
if(head==NULL||head->next==NULL){
return head;
}
struct ListNode* newhead=ReverseList(head->next);
head->next->next=head;
head->next=NULL;
return newhead;
}*/
/*方法三*/struct ListNode* ReverseList(struct ListNode* head){
struct ListNode*newhead=NULL;
struct ListNode*p;
while(head!=0){
p=head;
head=head->next;
p->next=newhead;
newhead=p;
}
return newhead;
}
查看58道真题和解析