题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
struct ListNode* ReverseList(struct ListNode* pHead ) {
    // write code here
    if(pHead==NULL) return pHead;
    //没有值则不做翻转,直接输出空链表即可;
    //逐个修改结点的next指针,使得链表反向
    struct ListNode* tmp = pHead->next;
    pHead->next=NULL;
    //pHead=tmp;
    while(tmp!=NULL){
        struct ListNode* q=tmp->next;
        tmp->next=pHead;
        pHead=tmp;
        tmp=q;
    }
    return pHead;
}

思路如上述的注释,另外,此题还可以使用头插法进行处理,使得链表翻转,准备尝试编写代码留在评论区。

全部评论
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param pHead ListNode类 * @return ListNode类 */ struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here if(pHead==NULL) return pHead; //其余情况下使用头插法翻转链表; struct ListNode* p=pHead->next; pHead->next=NULL; struct ListNode* q=p->next; //p指针存放的是即将作为新的头的值,q指针存放的是其余的链表; while(p!=NULL){ p->next=pHead; pHead=p; p=q; q=q->next; } //p->next=pHead; //pHead=p; return pHead; } 虽然感觉自己的代码有点问题,比如只有一个元素的时候p指针已经为NULL了,那么q指针的初始化就应该出现问题,但是很奇怪的是反而跑通了,有点想不明白
点赞 回复 分享
发布于 2023-01-04 21:43 上海

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务