反转链表

//  结点1->next结点2->next结点3
//    |          | 
//  pHead       temp(保存pHead的后继结点)
//变为:
//  结点1next<-结点2->next结点3
//    |          |         |
//  preNode     pHead     temp
//
//需要4步: 第1步:保存pHead的后继结点;
//         第2步:将结点2的后继变为结点1;
//         第3步:preNode指针后移
//         第4步:pHead指针后移
//循环以上4步,至到pHead为空即可结束循环
struct ListNode* ReverseList(struct ListNode* pHead ) {
    struct ListNode* preNode = NULL;  
    struct ListNode* temp = NULL;     
    while(pHead != NULL)            //至到pHead为空即可结束循环
    {
        temp = pHead->next;       //第1步
        pHead->next = preNode;   //第2步
        preNode = pHead;        //第3步
        pHead = temp;          //第4步
    }
    return preNode;           //返回最开始链表的最后一个结点
}#牛客AI配图神器#
全部评论

相关推荐

非技术岗一般是考行测吗
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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