206.翻转链表

发布时间:2024年01月18日

翻转链表

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-linked-list/description/

思路1:
注意链表头结点和n3为空的情况应排除。

使用n1,n2,n3;

使链表的指向一次改变。

n3的目的是为了记录结点位置。

代码:

// struct ListNode* reverseList(struct ListNode* head) {
//     if(head==NULL) return NULL;
//     struct ListNode* n1=NULL,*n2=head,*n3=n2->next;
//     while(n2){
//         n2->next=n1;
//         n1=n2;
//         n2=n3;
//         if(n3){
//              n3=n3->next;
//         }
//     }
//     return n1;
// }

思路2:

重新定义一个头结点newhead,通过cur将节点依次取出后头插,next结点用于记录。

// struct ListNode* reverseList(struct ListNode* head) {
//     struct ListNode* newHead=NULL;
//     struct ListNode*cur=head;
//     while(cur){
//         struct ListNode* next=cur->next;
//         cur->next=newHead;
//         newHead=cur;
//         cur=next;
//         //next=next->next;
//     }
//     return newHead;
// }

文章来源:https://blog.csdn.net/2301_77479435/article/details/135659442
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。