当前位置: 首页 > news >正文

链表中每k个一组进行反转

将给出的链表中的节点每k个一组进行反转,返回反转后的链表。如果链表中的结点不是k的倍数,将最后剩下的结点保持原样。如:1->2->3->4->5。k=2,结果是2->1->4->3->5。

思想:将k个结点头插法插到上一组的尾结点的后面。最后剩下不足k个元素的部分,已经被反转,需要反转回来。

代码:

void reverseK(LinkList L,int k){LNode *head=L,*p=L->next,q,end;int count = 0;while(p!=NULL){if(count == 0) end=p;//本次反转的最后一个结点q=p->next;//存后继结点p->next=head->next;//头插到head后面 head->next=p; if(++count==k){//进行下一组反转 count =0;head=end;}p=q;} end->next=NULL;//最后一个结点的next置空 if(count!=0){//最后面不足k个结点不用反转,将其反转回来。 end=p=head->next;//本次反转的最后一个结点 while(p!=NULL){q=p->next;//暂存后继 p->next=head->next;//头插到head后面 head->next=p;p=q;}end->next=NULL;//最后一个结点的next置空 }}

时间复杂度O(n);空间复杂度O(1)


http://www.mrgr.cn/news/26338.html

相关文章:

  • STL详解 - vector
  • 计算机网络:概述 - 性能指标
  • 今天一定要彻底卸载Windows Denfender!攻略给你了
  • 代码随想录Day 43|leetcode题目:300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
  • 【zabbix监控软件(配置及常用键值)】
  • Qt常用控件——QTextEdit
  • 心觉:收钱就像喝水一样简单,是如何做到的?
  • lvs命令介绍
  • 尤雨溪推荐的拖拽插件,支持Vue2/Vue3 VueDraggablePlus
  • 【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)
  • 论文速递! Attention-LSTM特征融合,用于剩余使用寿命(RUL)预测
  • 会计信息化:从核算软件到智能系统
  • 力扣3014.输入单词需要的最少按键次数I
  • 【STM32】独立看门狗(IWDG)原理详解及编程实践(上)
  • Linux 防火墙:iptables (二)
  • Docker和Docker-compose
  • jQuery以及jQuery的选择器
  • NEXT.js 中间件 NextResponse.redirect 无效
  • JS - 获取剪切板内容 Clipboard API
  • 从控制系统角度理解拉普拉斯卷积定理