206. 反转链表

做题思路 or 感想:

  1,用双指针法便可解决

  2,这种链表的题自己画一下图就很快理解了,相当有意思啊

复制代码
 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode() : val(0), next(nullptr) {}
 7  *     ListNode(int x) : val(x), next(nullptr) {}
 8  *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 9  * };
10  */
11 class Solution {
12 public:
13     ListNode* reverseList(ListNode* head) {
14         if (head == nullptr)return nullptr;    //防止奇怪的测试用例
15         ListNode* slow = nullptr;   //初始化两个指针
16         ListNode* fast = head; 
17         while (fast != nullptr) {
18             ListNode* temp = fast->next;    //用temp储存后面的方向,防止后面的指针丢失方向
19             fast->next = slow;  //快节点指向后面(反转),然后快慢指针同时向前走一个节点的位置
20             slow = fast;
21             fast = temp;
22         }
23         return slow;    //最后fast为nullptr,得到的slow固然是新的头节点了
24     }
25 };
复制代码

 

posted @   北原春希  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示