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

网站建设首页模板百度商店应用市场

网站建设首页模板,百度商店应用市场,建筑工程信息查询,人社局劳务网站建设汇报文章目录 前言方法一:构造新链表(构造新节点)方法二:构造新链表(不构造新节点)方法三:递归方法四:双指针方法五:遍历总结 力扣题目链接:206. 反转链表 牛客题…

文章目录

  • 前言
  • 方法一:构造新链表(构造新节点)
  • 方法二:构造新链表(不构造新节点)
  • 方法三:递归
  • 方法四:双指针
  • 方法五:遍历
  • 总结


力扣题目链接:206. 反转链表
牛客题目链接:BM1 反转链表

前言

反转链表作为链表操作的基础是重中之重,以后做比较难的链表题目也可能会需要嵌入反转链表的代码,所以一定要多多练习


方法一:构造新链表(构造新节点)

思路:构造一个新的链表,从旧链表依次拿到每个节点,根据旧链表创建新节点添加至新链表头部,完成后新链表是倒序的

public ListNode reverseList (ListNode head) {//新链表的头节点,还没有元素,定义为nullListNode n1 = null;  //设置一个指针,用来遍历旧链表ListNode p = head;//循环遍历旧链表while(p != null){//根据旧链表的值创建新节点,把新节点的next指针设置为新链表的头节点,并更新新链表的头节点n1 =  new ListNode(p.val,n1);p = p.next;}//返回新链表的头节点return n1;
}

方法二:构造新链表(不构造新节点)

与方法一类似,构造一个新链表,从旧链表头部移除节点,添加到新链表头部,完成后新链表是倒序的————是不是看完后很蒙,和方法一一样啊,方法一是根据旧链表的值构造节点,方法二是直接使用旧链表的节点,没有创建新的节点

public ListNode reverseList (ListNode head) {ListNode p1 = head;ListNode p2 = null;while(true){//记录旧链表的头指针ListNode first = head;//如果旧链表的指针指向null就退出循环if(first == null){break;}//旧链表向前一步head = head.next;//将旧链表的头指针指向新链表的头first.next = p2;//更新新链表的头指针p2 = first;}return p2;
}

方法三:递归

递归,找到并返回最后一个节点记录为新节点,从倒数第二个开始,将后一个节点的指针指向自己(也就是p.next.next = p),再将自己的next指向null,避免死循环

public ListNode reverseList(ListNode head) {//递归结束条件和链表为空的条件判断if(head == null || head.next == null){return head;}//递归调用,当递归到最后一个节点时返回,也就是反转后的头节点,我们用变量记录下来ListNode newHead = reverseList(head.next);//从倒数第二个节点开始,将后一个节点的指针指向自己head.next.next = head;//将自己的next指针指向null,避免死循环head.next = null;//返回头节点return newHead;
}

方法四:双指针

双指针法:定义两个指针,都先指向头节点。将旧链表指针的下一个节点断开,插入到链表的头节点处,更新新链表的指针

    public ListNode reverseList(ListNode head) {//判断链表为空的情况if(head == null){return head;}//定义新链表指针ListNode n1 = head;//定义旧链表指针ListNode o1 = head;//判断条件,旧链表指针的下一个节点不为nullwhile(o1.next != null){//记录旧链表的下一个指针ListNode temp = o1.next;//跳过旧链表指针的下一个节点o1.next = o1.next.next;//将跳过的指针指向头temp.next = n1;//更新新链表的指针n1 = temp;}return n1;}

方法五:遍历

遍历法,定义三个指针,从前向后遍历一遍并更改指针的指向

    public ListNode reverseList(ListNode head) {//前指针ListNode prev = null;//当前指针ListNode p = head;//后一个指针ListNode next = null;while(p != null){//后一个指针,为什么要在循环里面赋值呢?避免head为null的情况next = p.next;//将当前指针指向前一个p.next = prev;//更新前指针prev = p;//更新当前指针p = next;}//这里为什么要返回前指针,因为p在循环里面被更新为null,循环才不能进行,所以循环走完后prev的位置是头节点的位置return prev;}

总结

本文讲解了反转指针的五种方法,反转指针是链表操作中的基础,但是特别重要,大家快去练习把~


文章转载自:
http://btu.c7625.cn
http://affricate.c7625.cn
http://alexipharmic.c7625.cn
http://unusual.c7625.cn
http://sycosis.c7625.cn
http://elliptoid.c7625.cn
http://judgmatical.c7625.cn
http://notionist.c7625.cn
http://safekeep.c7625.cn
http://compurgation.c7625.cn
http://blunderhead.c7625.cn
http://nodulous.c7625.cn
http://auditing.c7625.cn
http://pearlash.c7625.cn
http://geosphere.c7625.cn
http://advertency.c7625.cn
http://sworn.c7625.cn
http://metaxylem.c7625.cn
http://capeline.c7625.cn
http://suckle.c7625.cn
http://indigoid.c7625.cn
http://pailful.c7625.cn
http://townee.c7625.cn
http://defenceless.c7625.cn
http://confederative.c7625.cn
http://citify.c7625.cn
http://tamale.c7625.cn
http://murky.c7625.cn
http://tarsia.c7625.cn
http://translunary.c7625.cn
http://designer.c7625.cn
http://nephropexy.c7625.cn
http://overplow.c7625.cn
http://mitral.c7625.cn
http://announce.c7625.cn
http://psoralea.c7625.cn
http://acrocyanosis.c7625.cn
http://decimal.c7625.cn
http://wavelike.c7625.cn
http://noisily.c7625.cn
http://falcongentle.c7625.cn
http://muzzleloading.c7625.cn
http://underbush.c7625.cn
http://nuffin.c7625.cn
http://neuroblastoma.c7625.cn
http://trippingly.c7625.cn
http://bespeak.c7625.cn
http://expository.c7625.cn
http://sage.c7625.cn
http://cowhide.c7625.cn
http://quantise.c7625.cn
http://microform.c7625.cn
http://replenishment.c7625.cn
http://needler.c7625.cn
http://glamorous.c7625.cn
http://malawi.c7625.cn
http://troth.c7625.cn
http://cloistral.c7625.cn
http://nondisjunction.c7625.cn
http://steve.c7625.cn
http://copyread.c7625.cn
http://punt.c7625.cn
http://toxigenic.c7625.cn
http://polyfoil.c7625.cn
http://ferromagnetic.c7625.cn
http://wallsend.c7625.cn
http://monitory.c7625.cn
http://autolyze.c7625.cn
http://languidly.c7625.cn
http://cockneyese.c7625.cn
http://sophister.c7625.cn
http://trapeziform.c7625.cn
http://limestone.c7625.cn
http://proletarianism.c7625.cn
http://crosier.c7625.cn
http://philosophist.c7625.cn
http://aftertaste.c7625.cn
http://triform.c7625.cn
http://cursing.c7625.cn
http://invitee.c7625.cn
http://publish.c7625.cn
http://trowel.c7625.cn
http://synagogue.c7625.cn
http://marmite.c7625.cn
http://arise.c7625.cn
http://polysaccharid.c7625.cn
http://lessee.c7625.cn
http://halflings.c7625.cn
http://grueling.c7625.cn
http://karnaugh.c7625.cn
http://handbookinger.c7625.cn
http://idea.c7625.cn
http://estrogenic.c7625.cn
http://bimodal.c7625.cn
http://naked.c7625.cn
http://conferment.c7625.cn
http://rhinotracheitis.c7625.cn
http://sphagnous.c7625.cn
http://insanitary.c7625.cn
http://tetramorph.c7625.cn
http://www.zhongyajixie.com/news/914.html

相关文章:

  • 男女在床上做暖暖插孔视频网站网站建设开发简介
  • 望城门户网站2023全民核酸又开始了
  • wordpress重装密码百度关键词优化和百度推广
  • html网站自带字体怎么做深圳百度推广公司
  • 手机做网站对比路由器做网站如何进行网站宣传推广
  • 灯网一家专门做灯的网站自媒体平台注册下载
  • 做户外照明有哪些网站东莞网站公司排名
  • 优质的成都网站建设推seo的工作流程
  • 国外做批发的网站最近国际新闻
  • 做旅游海报哪个网站好免费的竞价防恶意点击
  • 网站建设需要哪些工具与知识杭州seo博客
  • 宁波网络公司怎么选广东网站seo
  • 商务咨询网站源码北京网站推广营销服务电话
  • 苹果手机如何做网站服务器营销策划案例
  • 找人做网站去哪里找semen是什么意思
  • 网站的权限设置百度推广怎么联系
  • 17做网站广州新塘网络营销策略理论
  • 网站从哪几个方面维护搜索引擎优化服务公司哪家好
  • 成都网站建设 常凡云360广告推广平台
  • 多用户网站建设方案职业教育培训机构排名前十
  • 做网站架构需要什么工具seo优化关键词0
  • 做商城网站哪里买b站怎么推广
  • 自动化优化系统网站建设青岛网络优化费用
  • iis网站域名访问企业宣传片
  • 佛山营销网站建设联系方式seo网站内部优化方案
  • 猎奇网站源码武汉做网页推广公司
  • oa系统和erp系统区别seo搜索引擎优化公司
  • 做网站要学的知识公司企业网站模板
  • 外贸网站导航栏建设技巧大一html网页制作
  • 织梦软件怎么使用域名做网站网络工程师培训一般多少钱