Java就业冲刺之数据结构-递归-双向链表-树

就业冲刺之数据结构

数据结构

双向链表:

  • 应用:LinkedList

  • 什么是双向链表:

    • 双向链表是有若干个阶段构成,其中每个节点均匀3部分构成(前驱阶段,元素本身,后续节点),这些节点在内存中是游离状态的存在.
      请添加图片描述
      操作双向链表
  • 增删元素:(默认在尾部添加)将链断开,然后重新链接,从而实现添加/删除元素

    • 增将元素转换成节点 (只有一个元素时:头尾都是指向同一个元素)add(int index,E ele)
      • 在中间添加没有返回值,在尾部添加返回boolean
    • 删除元素 remove(int index):E 将删除掉的节点元素返回
  • 查找元素: get(int index):E

    • 如果查找的元素下标小于元素长度的一半时,则是从头节点顺序查找元素
    • 如果查找的元素下标大于元素长度的一半时,则是从尾节点逆向查找元素
    • 双向链表的查询效率高于单向链表,原因是:双向链表是对半-二分法查找
  • 修改元素 set(int index,E ele)

    • 用新元素替换指定位置的元素,并且将原来的元素返回
      面试题:
  • ArrayList和LinkedList的区别

    • 数据结构实现:ArrayList :基于数组,容量不够时候采用复制方式扩容。LinkedList:使用链表实现。
    • 随机访问效率:ArrayList 比LinkedList在随机访问的时候效率要高,因为 LinkedList 是链表结构,需要依次查找元素,性能不高。
    • 增加和删除效率 :LinkedList ⾸位操作具备很高效率。ArrayList 的头部性能稍差。
    • 线程安全:ArrayList 和 LinkList 都是不同步的,不保证线程安全。
    • 综合来说,需要频繁读取集合中的元素时,更推荐使用 Arrayist;而在头尾增删操作较多时,更推荐使用 LinkedList。ArrayList综合性能优秀,优选之!
    • 时间复杂度: 数据结果/算法性能高低的不断依据
      • O(1) -数组根据下标查询的时间复杂度
      • O(n) ----单向链表的时间复杂度
      • O(n^2) ----for循环俩层嵌套
  • 注意点:

    • 从JDK1.7开始,LinkedList的数据结构为双向链表
    • 从JDK1.7之前,LinkedList的数据节后为双向循环链表
      请添加图片描述

递归:

  • 什么是递归:
    • 是一种思想,运用到编程中体现为方法调方法本身
  • 经典案例:
  • 案例1:求阶乘
1!		1
2!		1*2			  2*1!
3!		1*2*3		  3*2!
4!		1*2*3*4		  4*3!
5!		1*2*3*4*5 	  5*4!
n!					 n*(n-1)!

请添加图片描述

public class Demo(){
   
  public static void main(String[] args){
   
    System.out.println("请输入整数")
    Scanner scanner = new Scanner(System.in)
    int x =csanner.nextInt();
    int resul = f(x)
    System.out.println(result);
  }
  //求阶乘
  public static int f(int n){
   
    if(n==1)
    	return 1;
    return n*f(n-1)<
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有小魚干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值