数据结构:数组 链表 栈 队列 (复习总结)

    技术2022-07-12  69

    数组:线性 连续内存空间 相同数据类型 逻辑结构 物理结构 数组下标=索引 a[0]  高效随机访问获取 低效插入和删除 多次删除(只标记)统一执行 垃圾箱删除的道理 数组 容器类 ArrayList vector

    容器中元素添加 获取 Object[] 数组 构造 扩容机制 原有容量的1.5倍

    链表:非连续 非顺序  插入和删除元素非常方便,查找麻烦 结点:element 数据域(数据元素) 指针域next(下一个元素的指针,引用,最后一个是null) 零散的内存块 链表类型:单 循环 双向 双向循环 单:头结点 尾结点 循环:尾next指向头data 双向:prev data next 两个指针+1数据。支持双向遍历。应用例子:hashmap 双向循环:

    数组和链表比较: 存储结构比较 随机访问效率高 查找数组快 链表动态扩容好 插入删除元素快 LinkedList

    思路:1.定义结点;2.使用结点表示链表     E item; Node<E> next; Node<E> prev;     node(index).item get 链表查找 一分为2查,双向链表,从前往后查,从后往前查

    ArrayList基于数组。LinkedList基于双向链表 查找 插入和删除 LinkedList更占内存,除了存储数据,还要有2个引用,一个指向前一个元素,一个指向后一个元素

    例子:反转单链表

    栈stack 数据结构: 实现 应用 吐 ArrayStack  入栈push; 出栈pop

    顺序栈:基于数组 链式栈:基于链表 栈 扩容2倍 整数integer.MAX_VALUE-8 boolean

    队列: 数据结构 FIFO 概念 常见队列 实现 火车站买票 拉  队列头 队列尾 操作:入队列enqueue.  出队列dequeue 应用:缓存 循环并发队列 消息通信 公平锁 顺序队列:基于数组  ArrayQueue head指针 tail指针 动态扩容机制(入队列)

    队列实现:基于单链表 添加和删除元素操作 应用:CPU 请求处理 队列 拒绝请求

    循环队列

    Processed: 0.012, SQL: 9