题解 | #反转链表#

反转链表

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
    struct ListNode* pre=NULL;  //pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向NULL
    struct ListNode* cur=pHead;  //cur指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head
    struct ListNode* nex=NULL;   //nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存

    while(cur!=NULL)
    {
        nex=cur->next;  //nex = cur->next, 保存作用
        cur->next=pre;  //cur->next = pre 未反转链表的第一个节点的下个指针指向已反转链表的最后一个节点
        pre=cur;        //指针后移,操作下一个未反转链表的第一个节点
        cur=nex;
    }
    return pre;
}

C语言刷题 文章被收录于专栏

自己从头开始刷的C语言

全部评论

相关推荐

牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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