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

积分支付 WordPress佛山百度关键词seo外包

积分支付 WordPress,佛山百度关键词seo外包,中国建设银行网站诚聘英才频道,vue网站引导页怎么做这个算法题有两种实现方式,一种是迭代,就是循环,还有一种是递归实现 迭代实现 迭代实现原理上是在一个循环如for中依次将一个节点的方向改变达到原地反序的实现 迭代法的核心是使用三个指针​(prev, curr, next)逐个…

这个算法题有两种实现方式,一种是迭代,就是循环,还有一种是递归实现

迭代实现

迭代实现原理上是在一个循环如for中依次将一个节点的方向改变达到原地反序的实现

迭代法的核心是使用三个指针​(prev, curr, next)逐个节点调整指针方向,逐步将链表反转。具体步骤如下:

  1. 初始化指针prev指向空,curr指向头节点。
  2. 遍历链表:每次循环将curr->next指向prev,然后更新prevcurr的指向。
  3. 终止条件:当curr遍历到链表尾部(curr == nullptr)时停止。
struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(nullptr) {}
};ListNode* reverseList(ListNode* head) {ListNode* prev = nullptr;  // 前驱指针,初始为空ListNode* curr = head;     // 当前指针,从头节点开始遍历while (curr != nullptr) {ListNode* next = curr->next; // 保存下一个节点curr->next = prev;           // 反转当前节点的指针方向prev = curr;                 // prev指针前移,记录当前改的节点防止断链curr = next;                 // curr指针前移}return prev; // 最终prev指向新头节点(原链表尾节点)
}

以链表 1 → 2 → 3 → 4 → 5 为例,逐步演示反转过程:

步骤操作前状态操作后状态关键代码
1prev=null, curr=11→null, prev=1, curr=2curr->next = prev
2prev=1, curr=22→1, prev=2, curr=3curr->next = prev
3prev=2, curr=33→2, prev=3, curr=4curr->next = prev
4prev=3, curr=44→3, prev=4, curr=5curr->next = prev
5prev=4, curr=55→4, prev=5, curr=nullptrcurr->next = prev

最终,prev指向节点5(新头节点),链表变为 5 → 4 → 3 → 2 → 1

递归实现

递归的核心思想是将链表分解为头节点剩余子链表两部分。递归反转子链表后,通过调整指针方向将头节点连接到反转后的子链表尾部,最终实现整个链表的反转

关键步骤

  1. 终止条件:若链表为空(head == nullptr)或仅有一个节点(`head->next == nullptr``),直接返回头节点(无需反转)。
  2. 递归反转子链表:递归调用处理head->next后的子链表,返回反转后的新头节点rest
  3. 调整指针:将当前节点的下一个节点(head->next)的next指向当前节点,形成反向连接,并将当前节点的next置空以避免循环。
struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(nullptr) {}
};ListNode* reverseList(ListNode* head) {// 终止条件:空链表或单节点链表无需反转if (head == nullptr || head->next == nullptr) {return head;}// 递归反转子链表,得到新头节点restListNode* rest = reverseList(head->next);// 调整指针方向head->next->next = head;  // 子链表尾节点指向当前头节点head->next = nullptr;     // 断开原链表的正向连接// 返回反转后的新头节点(即原链表的尾节点)return rest;
}

递归是有两个指针,一个head,一个rest记录新节点,递归分为递阶段和归阶段,在满足if条件的时候比如链表是12345,head会先一直走到5的位置,rest也会在5这个位置记录下来返回作为新的头节点 ,这时候head的next指针指向nullptr,不满足if条件,就不会再进行递了,再开始归执行下面的指针方向转换,每次执行完归一层,如5节点执行完会走到4。

注意:递归每次创建调用都会创建一套自己的新的变量,比如这个程序每次都是传入head的next作为参数构造,每次head都是一个全新的指针,他们的参数和作用域不同,和原来的head不同,他们只是名字相同。

 


文章转载自:

http://n8LtYW13.wqjpL.cn
http://ZIVfneLw.wqjpL.cn
http://mivfUuy7.wqjpL.cn
http://f4vp0JpC.wqjpL.cn
http://IAwQgg3V.wqjpL.cn
http://ctg0WZfi.wqjpL.cn
http://Bo7OmPXX.wqjpL.cn
http://eJU7sGmS.wqjpL.cn
http://jKqGPFXV.wqjpL.cn
http://jRHdg5sV.wqjpL.cn
http://sWnLBA9o.wqjpL.cn
http://Odl9xmtW.wqjpL.cn
http://EkssbAK1.wqjpL.cn
http://Cv8yiGh5.wqjpL.cn
http://4FXlXLXt.wqjpL.cn
http://rPiGKoZX.wqjpL.cn
http://Fk3HmRjK.wqjpL.cn
http://6OYIBaAu.wqjpL.cn
http://SvraTR6w.wqjpL.cn
http://rcjeEtJv.wqjpL.cn
http://CqfQTsBx.wqjpL.cn
http://XFBRU6nf.wqjpL.cn
http://E3RSn7BU.wqjpL.cn
http://QlUwVvsR.wqjpL.cn
http://5j2LjDdQ.wqjpL.cn
http://s1FQXFok.wqjpL.cn
http://s7dr8N3f.wqjpL.cn
http://2wC5E9yj.wqjpL.cn
http://nhrDWfvW.wqjpL.cn
http://zjnBKTm1.wqjpL.cn
http://www.dtcms.com/wzjs/696792.html

相关文章:

  • 公司 网站源码网站开发薪酬
  • 怎样在百度上作网站推广服务器中安装网站
  • 盐城网站建设代理商网站备案安全责任书是谁盖章
  • 企业服务建设网站网站规划与建设大作业答案
  • 建立网站费用较低企点官网
  • 山东省城乡住房和城乡建设厅网站笑话网站 wordpress
  • 成功的企业网站案例我想做电商怎么加入
  • 京东的网站是怎么建设的网站技术维护
  • 可以免费发广告的网站wordpress添加导航栏
  • 做网站应该注意什么做企业网站找谁
  • WordPress显示网站加载时间wordpress 图片云存储
  • 网站开发工程师缺口营销推广活动策划书模板
  • 中关村在线官方网站电脑WordPress自动拼音别名
  • 遵义 网站建设最新的高端网站建设
  • 佛山高明网站建设设计网站建设手机银行修改登录密码
  • 有的网站打不开 但别人电脑能打开祁阳做网站
  • 成都网站建设行业分析建立网站的想法
  • 成品网站w在线观看企业管理网络图
  • 网站建设要学哪些方面南沙区做网站公司
  • 郑州网站建设规划巴南区网站建设
  • 网站开发需要逻辑吗wordpress 获得评论数
  • 网站名称是什么意思阿里云企业邮箱官网
  • jsp源码做网站优化公司网站排名
  • 各种网站开发工具室内设计联盟论坛官网
  • 无锡建设建设局网站注册个网站多少钱
  • 哈尔滨网站建立公司免费网站整站模板源码
  • wordpress插件原理湖北seo网站设计
  • 免费1级做爰片在线网站flask api式网站开发
  • 南京公司网站建设费用怎么做页游网站运营
  • 如何创建广告网站装修材料厂家哪家好