题解 | 反转链表

反转链表

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;
}

全部评论

相关推荐

04-24 18:13
南京大学 Java
不吃酸菜血肠:看力竭了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务