Java数据结构总结

一、分类

按照逻辑结构分为

  • 线性结构:各数据元素之间的逻辑以用一个
  • 非线性结构:
线性结构 非线性结构
包括 顺序表(数组)、链式表、队列、栈 树、图
二、线性表
  1. 顺序表(Array):
  • 用一组地址连续的存储空,依次存储线性表的数据元素

  • 特点:物理地址相邻的元素,存储的位置也相同

  1. 链表 (Linked list):
  • 用一组任意存储单元存放线性表的数据元素,并通过指针相连接结点的序列;

  • 第一个元素为头结点,最后一个为尾结点。

  • 结点包含

数据域 指针域
存储信息 存储后继元素的地址
  1. 栈(Stack): 只能在某一端进行插入和删除的特殊线性表。
  • 栈顶: 允许入栈出栈的一端;
  • 栈底: 不允许入栈出栈的一端;
  • 特点: 按照先进后出的原则存储数据,先进入的数据被压入栈底,最后进入的元素在栈顶,需要读取数据时从栈顶弹出数据;
  1. 队列(Queue): 一种特殊的线性表,它只允许在表的前端进行删除操作,在表的后端进行插入操作,队列中没有元素时,称之为空队列;
  • 队首: 删除的一端(出队)
  • 队尾: 插入的一端(入队)
  • 特点: 先进先出
三、链表

链表有单链表、双向链表、循环单链表等;

  • 单链表:链表中的结点包含一个指针域指向后继结点;
  • 循环单链表:单链表的尾结点指向该链表的头结点;
  • 双链表:链表中的结点都包含了两个指针域,分别指向该结点的直接前驱和直接后继。
双链的组成 直接前驱 直接后继
四、顺序表(数组)与链表的区别:
  • 存储空间的区别:
    • 数组是静态分配内存空间的,所有元素是存放在一组地址连续的存储单元中,一旦分配,不可更改,数据元素在数组中的顺序号可确定它在存储单元中的位置。
    • 链表动态分配内存空间,存储空间是不确定的。
  • 效率:
    • 数组的查询效率高,但添加元素和删除操作的效率低;
    • 链表的查询效率低,但增删操作的效率高;

你可能感兴趣的:(Java数据结构)