数据结构的基本概述

数据结构的分类

一般按照数据的逻辑结构进行简单的分类,可以分为线性结构和非线性结构
1)线性结构
简单的说,线性结构就是表中的各个节点具有线性关系
数据库结构语言描述:

  • 线性结构是非空集;
  • 线性结构有且只有一个开始节点和终端节点;
  • 线性结构所有的节点最多只有一个直接前驱节点和一个直接后继节点;
    线性表,栈,队列和串等都是线性结构

2)非线性结构
简单的说,非线性结构就是表中各个节点之间具有多个对应关系
数据结构语言描述:

  • 非线性结构是非空集;
  • 非线性结构的一个节点可能有多个直接前驱节点和直接后驱节点;
    数组,广义表,树结构和图结构都是非线性结构

数据结构的存储方式

1)顺序存储
顺序存储方式就是在一块连续的存储区域一个接着一个的存放数据
把逻辑上相邻的节点存储在物理位置上相邻的存储单元里,节点之间的逻辑关系由存储单元的邻接关系来体现
2)链式存储
链式存储方式比较灵活,不要求逻辑上相邻的节点在物理位置上也相邻,节点之间的逻辑关系用附加的引用字段表示,一个节点的附加引用字段往往指向下一个节点的存放位置
3)索引存储
索引存储方式采用附加的索引表的方式来存储节点信息
索引表由若干索引项组成,索引项的一般形式为:(关键字,地址)。其中关键字是能够唯一标识一个节点的数据项
索引存储还可以分为如下两类:

  • 稠密索引:这种方式中每个节点在索引表中都有一个索引项。其中,索引项的地址指示节点所在的存储位置
  • 稀疏索引:这种方式中一组节点在索引表中只对应一个索引项。其中,索引项的地址指示一组节点的起始存储位置
    4)散列存储
    散列存储是根据节点的关键字直接计算出该节点的存储地址
    在实际应用中,需要根据具体的数据结构来决定采用哪种存储方式

常用的数据结构

1)数组(Array)
数组是一种聚合数据类型,是将具有相同类型的若干个变量有序的组织在一起的集合
2)栈(Stack)
栈是一种特殊的线性表,只能在一个表的一个固定端进行数据节点的插入和删除。栈按照后进先出的原则来存储数据。
3)队列(Queue)
队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入,而在另一端进行删除操作。一般来说,进行插入操作的一端为队尾,进行删除操作的一端称为队头。
4)链表(Linked List)
链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构在物理上具有连续的特点。链表由一系列数据节点构成,每个数据节点包括数据域和引用域两个部分。其中引用域保存了数据结构中下一个元素存放的地址。链表结构中数据元素的逻辑顺序是通过链表中的引用链接次序来实现的。
5)树(Tree)
树是典型的非线性结构,其是包括n个节点的有穷集合K。在树结构中,有且仅有一个根节点,该节点没有前驱节点。在树结构中的其他节点都有且只有一个前驱节点,而且可以有m个后继节点
6)图(Graph)
图是另外一种非线性数据结构。在图结构中,数据节点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,就表示这两个顶点具有相邻关系
7)堆(Heap)
堆是一种特殊的树形结构,一般讨论的堆都是二叉堆。堆的特点是其根节点的值是所有节点中最小的或者最大的,并且根节点的两个子树也是一个堆结构
8)散列表(Hash)
散列表源自于散列函数,其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就不用进行比较而取得所查记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值