Java数据结构总结

一、分类

按照逻辑结构分为

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

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

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

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

  • 结点包含

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值