题解 | #反转链表#
思路: 以tail链表为媒介,初始时以空指针prev插入tail->next处 这样就提取到了第一个数,将该数字赋值给prev 并插入tail的next 级tail-> next =prev 实现了第一关放到最后的功能。
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode *pHead) { if (pHead == nullptr) // 判断传进来的列表是否为空 return nullptr; ListNode* tail = pHead; // 将phead链表赋值给tail ListNode* prev = nullptr; //定义一个空指针(空链表) while (tail) { //用next记录当前位置tail的下一个位置tail->next; 即如果输入1,2,3 next就指向 2,3 ListNode* next = tail->next; tail->next = prev; //当前位置的next指向其前一个位置处; tail为{1,{}} prev = tail; // 原本为prev空链表 现在给他赋值 为 prev = (1) tail = next; // 地一个数安排好后,将tail定义为后放的几个数 } return prev; } };
};