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

《网站开发实训》实验报告关于汽车的网站

《网站开发实训》实验报告,关于汽车的网站,设计公司网站图,ptp网站开发给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 链表的题&#xff0c;大部分都可以用指针或者递归可以做&#xff0c;指针如果做不出来的话&#xff0c;…

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

       链表的题,大部分都可以用指针或者递归可以做,指针如果做不出来的话,建议多声明几个指针就可以做的出来了

方法一:

       因为链表中的头结点也有可能进行反转操作,所以我们为了不失一般性,创建一个虚拟头结点进行操作

       我们需要旋转[left,right]区间内的链表结点,所以我们就必须要知道left的上一个结点是谁,所以我们可以使用快慢指针进行操作,slow慢指针指向我们left的上一个结点,对区间内的节点进行反转,过程如下:

 源代码如下:

 public ListNode reverseBetween(ListNode head, int left, int right) {//如果头结点为空或者是头结点的后继点为空的话直接返回headif(head==null||head.next==null){return head;}//创建一个虚拟头结点ListNode dummyHead=new ListNode(0);dummyHead.next=head;//设置两个指针ListNode slow=dummyHead;//慢指针-->指向left指针指向节点的上一个节点ListNode fast=dummyHead.next;//快指针  将left指针与right指针中的节点加到left指针前面(包括right指针)//进行移动,将slow指针移向left指针的前一个节点for (int i = 1; i <left; i++) {slow=slow.next;fast=fast.next;}//将left和right指针中的节点移向left节点前(包括right指针对应的节点)for (int i = 0; i <right-left; i++) {ListNode removeNode=fast.next;fast.next=fast.next.next;removeNode.next=slow.next;slow.next=removeNode;}//返回头结点后的链表长度return dummyHead.next;}

方法二:

在以前学习得到过程中我们已经学过了链表翻转(必会)

//这几行代码必须得会,链表题最多的就是翻转,你可以直接当一个api去用
public ListNode reverse(ListNode root){if(root==null||root.next==null){return root;}//前扑ListNode pre=null;ListNode cur=root;//后继ListNode next=null;while(cur!=null){next=cur.next;cur.next=pre;pre=cur;cur=next;}//返回的是翻转后的头结点return pre;}

       现在我们只需要找到需要翻转链表区间的前扑后继,然后通过前扑的next指向翻转后的头结点,让反转后的尾结点指向后继,这道题就解出来了

 

源代码如下(这种方法比较推荐,比较容易理解):

 public ListNode reverseBetween(ListNode head, int left, int right) {if(head==null||left>=right){return head;}//找到left的前驱节点,因为会设计头结点的操作,所以要创建一个虚拟头结点ListNode dummyNode=new ListNode(0,head);ListNode pre=dummyNode;//找到对应的前驱节点for (int i =1; i <left; i++) {pre=pre.next;}//未反转链表的头结点ListNode leftNode=pre.next;ListNode rightNode=leftNode;pre.next=null;//找到未反转链表的尾结点for (int i = 1; i <=right-left; i++) {rightNode=rightNode.next;}//找到后继ListNode end=rightNode.next;rightNode.next=null;ListNode newStartNode=reverse(leftNode);pre.next=newStartNode;leftNode.next=end;return dummyNode.next;}//反转链表public ListNode reverse(ListNode root){if(root==null||root.next==null){return root;}ListNode pre=null;ListNode cur=root;ListNode next=null;while(cur!=null){next=cur.next;cur.next=pre;pre=cur;cur=next;}return pre;}

 

http://www.yayakq.cn/news/912681/

相关文章:

  • 做苗木网站哪家好海外购物商城
  • 北京住房建设部网站首页linux 转换wordpress
  • 郑州网站制作哪家招聘食品网站的网页设计
  • 郑州做网站的多不多互联网营销师证书是国家认可的吗
  • 搞笑网站建设目的和意义中国做国外的网站
  • 无锡网站的优化哪家好北京工厂网站建设
  • 天津 网站开发网络游戏代理
  • 青岛网站建设 熊掌号深圳龙岗网站建设公司哪家好
  • 营销型网站建设ppt模板网站推广每天必做的流程
  • 阜城县网站建设phpstuy wordpress
  • 网站开发招聘信息外链怎么打开
  • 政务公开网站建设的亮点和建议虚拟主机怎么建设网站
  • 建设网站有哪些参考文献某个产品营销推广方案
  • 建设银行征信中心网站百度怎么发自己的小广告
  • 自己建网站怎么赚钱萧山区住房和城乡建设局网站
  • 外贸建站cms网站用模板为什么不利于seo推广
  • 搞个网站要多少钱怎么在wordpress建英文网站
  • 自己创业做原公司一样的网站成都网站游戏设计
  • 定制网站前准备抖音代运营招标
  • 网站建设与管理的条件市场营销专业就业方向
  • 成都青白江网站建设营销网站如何实现差异化
  • 注册网站会有哪些风险梅州市城乡建设部网站首页
  • 网站开发年度总结工作微信app下载安装官方版2022网址
  • 莱芜网站优化团队付费腾讯企业邮箱入口
  • 网站建设的常用技术有哪些云网站制作的流程
  • 潍坊网站建设选聚搜网络好哔哩哔哩网页版下载视频
  • 辽宁省网站制作网站设计公司多少钱
  • cpa广告联盟没有网站怎么做seo
  • 江北网站建设价格网站技术解决方案的内容
  • 枣强县住房和城乡建设局网站物流网站建设费用