leetcode2130反转链表

  1. 1尾插法:记录前面的节点,使后面的节点指向前面的节点;记后面的节点为now。因为要不停移动now,使其移动所以要临时记录原来之后的节点。
复制代码
ListNode* now=slow->next;
ListNode* pre=nullptr;
while(now){
  ListNode* node=now->next;
  now->next=pre;
  pre=now;//移动前面的指针指向后面的节点
  now=node;//移动后面指针继续翻转         
} 
slow->next=pre;//将两节连起来
复制代码
  1. 2就地逆置法:和头插法有异曲同工之妙。相比第一种方法节约了内存开销。

先删除后面的节点(记为now),再头部插入;然后更新现在的头节点;在继续更新now选择新的节点进行翻转。

删除节点

 1 pre->next=now->next;//删除了now 

ListNode* now=slow->next;//slow->next永远是头节点
while(now->next){//继续翻转之后的节点
  ListNode* node=now->next;//记录原来之后的节点,以便之后继续进行翻转节点
  now->next=node->next;//删除node
  node->next=slow->next;//将node插入至头部
  slow->next=node;//把头节点更新       
}

 

posted @   iu本u  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示