栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构(day02)笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构(day02)笔记

1.剑指 Offer 06. 从尾到头打印链表

思路分析

反转链表,我们可以用一个链表 list 进行接收 head遍历的每一个节点的数值

1. 这样接收完的链表就变成了 :{1,3,2}

2.因为要输出数组  因此创建一个数组a  数组的长度就是链表的长度

3.然后循环遍历数组,每次都将链表最后一个赋给数组

即 a[i]=list.removeLast();

4.最后输出数组即可

代码

 

class Solution {
    public int[] reversePrint(ListNode head) {
      LinkedList list=new LinkedList<>();
      //如果head为空直接返回空
      if(head==null)  return new int[]{};
      while(head!=null){
          list.addLast(head.val);
          head=head.next;  //向下遍历
      }
      int[] a =new int[list.size()];
      for(int i=0;i

2.剑指 Offer 24. 反转链表

 

思路

要进行链表的反转, 因为存入的是节点,不想上一题是要输出数值即可,因此在用一个链表承载是不考虑的,一般向这种要对链表进行反转,一般情况是考虑多指针的问题

定义 cel=head  是一个临时节点; 一会要用于改变的

定义一个 pre =null  用于 cel.next=pre  就是用于存储反转的下一个节点

 

 

 

 

 

class Solution {
    public ListNode reverseList(ListNode head) {
     ListNode cel=head; //临时节点
     ListNode pre=null;  //初始化节点
     while(cel!=null){
         ListNode temp=cel.next;   //存入cel下一个节点 放置cel改变next值后找不到下一个节点
         cel.next=pre; //将cel的next修改为 初始化的节点
         pre=cel;  
         cel=temp;  
     }
     return pre; //当cel为空结束循环 这是最后一个节点其实就是pre  因此要输处pre
    }
}

大家不懂的,还是要多画图,不要总是感觉自己想不到这种算法,想要放弃,其实初学者都是刚开始要理解别人的代码就可以,多刷慢慢就会有思路了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号