反转链表

原题链接 反转链表

题目描述
输入一个链表,反转链表后,输出新链表的表头。


题目要求很简单,看一下解题思路。
解题思路:

网课解题思路

  1. 利用next 备份head->next
  2. 修改head->next,让其指向新链表的头节点new_head
  3. 移动head与new_head

代码如下

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        ListNode* new_head = NULL;//指向新链表头节点的指针
        while(pHead){
            ListNode* next = pHead->next;//对应第一步
            pHead->next = new_head;//对应第二步
            new_head = pHead;//对应第三步
            pHead = next;//对应第三步
        }
        return new_head;
        
    }
};

你可能感兴趣的:(反转链表)