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

Java复习Day25

数据结构基础概念

1. 栈 (Stack)

栈是一种特殊的线性表,其元素插入和删除操作只能在同一端进行。允许操作的一端称为栈顶(TOP),另一端固定不动称为栈底(BOTTOM)。栈遵循后进先出(LIFO)原则,即最先入栈的元素位于栈底,最后入栈的元素位于栈顶;出栈时顺序相反。

术语说明:

  • 压栈(Push):插入元素的操作,也称进栈/入栈
  • 出栈(Pop):删除元素的操作,也称弹栈

Java中的Stack类继承自Vector,常用方法包括:

  • push(E):压栈操作
  • pop():获取并移除栈顶元素
  • peek():获取栈顶元素但不移除
  • empty()/isEmpty():判断栈是否为空
  • search(Object):查找元素位置,未找到返回-1

2. 递归

2.1 简介

递归是一种通过将问题分解为同类子问题来求解的方法,表现为方法自我调用。类比查词典:当遇到不理解的词时查阅,若解释中仍有不理解的词则继续查阅,直到获得明确解释,再回溯理解最初的问题。

2.2 特征

  • 终止条件:必须有明确的递归出口
  • 自身调用:子问题与原问题求解方法一致

2.3 解题思路

  1. 明确方法功能
  2. 确定递归出口
  3. 建立递推关系式

2.4 应用场景

  • 阶乘问题
  • 二叉树深度计算
  • 斐波那契数列(0,1,1,2,3,5,8,13...)
  • 快速排序
  • 文件遍历
  • XML文件解析

缺点:

  • 内存消耗较大
  • 若无终止条件或递归过深,易导致栈溢出(StackOverflowError)

3. 队列

3.1 简介

队列是操作受限的线性表,只允许在表的一端(队尾Rear)插入,另一端(队头Front)删除。其特性为先进先出(FIFO)。

分类方式:

  • 按方向:单向队列、双向队列
  • 按阻塞情况:阻塞队列、非阻塞队列
  • 按容量限制:有界队列、无界队列

3.2 Queue接口

继承自Collection,提供两种形式的操作:

  • 失败时抛出异常
  • 失败时返回null/false

3.3 Deque接口

双向队列,继承自Queue(Double-end queue),支持在两端进行插入、删除和获取操作,可实现FIFO或LIFO。

使用建议:

  1. 推荐使用Deque而非Stack实现栈结构
  2. 原因:
    • Deque是接口,遵循面向接口编程原则
    • Stack继承自Vector,使用synchronized实现线程安全

相关文章:

  • 性能优化 - 案例篇:缓冲区
  • Vue-1-前端框架Vue基础入门之一
  • Redis 缓存穿透、缓存击穿、缓存雪崩详解与解决方案
  • c++学习值---模版
  • Java设计模式详解:策略模式(Strategy Pattern)
  • [蓝桥杯]缩位求和
  • Odoo 中SCSS的使用指南
  • Vue框架2(vue搭建方式2:利用脚手架,ElementUI)
  • Python Day39 学习(复习日志Day4)
  • 鸿蒙OSUniApp PWA开发实践:打造跨平台渐进式应用#三方框架 #Uniapp
  • 用户资产化视角下开源AI智能名片链动2+1模式S2B2C商城小程序的应用研究
  • (9)-Fiddler抓包-Fiddler如何设置捕获Https会话
  • ACL基础配置
  • python爬虫:RoboBrowser 的详细使用
  • 雷达中实信号与复信号
  • Camera相机人脸识别系列专题分析之九:MTK平台FDNode三方FFD算法dump、日志开关、bypass、resize及强制不同三方FFD切换等客制化
  • Cookie存储
  • Socket网络编程之UDP套件字
  • 从0开始学vue:Element Plus详解
  • 常见相机的ISP算法
  • 鸡西各个网站/站长统计网站
  • 一个服务器可以做两个网站/网络推广都有哪些方式
  • 五金日杂店做网站/常用的网络推广方式有哪些
  • 抖音代运营怎么解绑/独立站seo外链平台
  • 北京网站建设icp有限公司/全球网站流量排名查询
  • 湖州建设局投标网站/域名查询入口