文章目录

  • 1.概述
  • 2.数据间逻辑关系
  • 3.数据的存储结构(或物理结构)
    • 3.1顺序结构
    • 3.2链式结构
    • 3.3索引结构
    • 3.4散列结构
  • 4.运算结构

1.概述

数据结构,就是一种程序设计优化的方法论,研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,目的是加快程序的执行速度、减少内存占用的空间

2.数据间逻辑关系

数据的逻辑结构指反映数据元素之间的逻辑关系,而与数据的存储无关,是独立于计算机的。

  • 集合结构:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系。集合元素之间没有逻辑关系。
  • 线性结构:数据结构中的元素存在一对一的相互关系。比如:排队。结构中必须存在唯一的首元素和唯一的尾元素。体现为:一维数组、链表、栈、队列
  • 树形结构:数据结构中的元素存在一对多的相互关系。比如:家谱、文件系统、组织架构
  • 图形结构:数据结构中的元素存在多对多的相互关系。比如:全国铁路网、地铁图

3.数据的存储结构(或物理结构)

数据的物理结构/存储结构:包括数据元素的表示和关系的表示。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。

3.1顺序结构

  • 顺序结构就是使用一组连续的存储单元依次存储逻辑上相邻的各个元素。
  • 优点: 只需要申请存放数据本身的内存空间即可,支持下标访问,也可以实现随机访问。
  • 缺点: 必须静态分配连续空间,内存空间的利用率比较低。插入或删除可能需要移动大量元素,效率比较低

3.2链式结构

  • 不使用连续的存储空间存放结构的元素,而是为每一个元素构造一个节点。节点中除了存放数据本身以外,还需要存放指向下一个节点的指针
  • 优点:不采用连续的存储空间导致内存空间利用率比较高,克服顺序存储结构中预知元素个数的缺点。插入或删除元素时,不需要移动大量的元素。
  • 缺点:需要额外的空间来表达数据之间的逻辑关系,不支持下标访问和随机访问。

3.3索引结构

  • 除建立存储节点信息外,还建立附加的索引表来记录每个元素节点的地址。索引表由若干索引项组成。索引项的一般形式是:(关键字,地址)。
  • 优点:用节点的索引号来确定结点存储地址,检索速度快。
  • 缺点: 增加了附加的索引表,会占用较多的存储空间。在增加和删除数据时要修改索引表,因而会花费较多的时间。

3.4散列结构

  • 根据元素的关键字直接计算出该元素的存储地址,又称为Hash存储。
  • 优点:检索、增加和删除结点的操作都很快。
  • 缺点:不支持排序,一般比用线性表存储需要更多的空间,并且记录的关键字不能重复。

4.运算结构

施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

  • 分配资源,建立结构,释放资源
  • 插入和删除
  • 获取和遍历
  • 修改和排序

数据结构(顺序结构、链式结构、索引结构、散列结构)相关推荐

  1. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  2. 数据的逻辑结构(线性结构、非线性结构;集合结构、线性结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  3. 数据库系统概念总结:第十一章 索引与散列

    周末无事水文章,期末备考的总结资料 第十一章 索引与散列 11.1 基本概念 基本的索引类型 –顺序索引:基于值的顺序排序 –散列索引:基于将值平均分布到若干散列同中.一个值所属的散列桶是由一个函数决 ...

  4. 链表list(链式存储结构实现)_数据结构知否知否系列之 — 线性表的顺序与链式存储篇(8000 多字长文)...

    从不浪费时间的人,没有工夫抱怨时间不够. -- 杰弗逊 线性表是由 n 个数据元素组成的有限序列,也是最基本.最简单.最常用的一种数据结构. 作者简介:五月君,Nodejs Developer,热爱技 ...

  5. 数据结构(三)线性表概念及Java代码实现顺序结构链式结构

    线性表的定义 零个或多个数据元素的有限序列. 线性表的抽象数据类型: package com.mylist;public interface MyList<E> extends Itera ...

  6. 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

    一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...

  7. 数据结构 | C语言实现线性表的顺序和链式结构

    线性表的顺序表示 线性表的顺序表示,是通过构造一个结构体实现的.结构体内包含一个定长数组和一个顺序表的长度.一维数组可以是静态分配或者是动态分配的.这里使用的是静态分配的方法. 代码如下: #incl ...

  8. 串--串的定义,顺序、链式存储结构,BF、KMP模式匹配算法(C语言描述)

    此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.串(String)的定义: 串(String):由零个或多个字符组成的 ...

  9. 线性表的顺序、链式存储结构基本操作

    线性表的抽象数据类型 operation InitList(&L):初始化操作,建立一个空的线性表L ListEmpty(L):若线性表为空,返回true,否则返回false ClearLis ...

最新文章

  1. MVC layout 命名空间引用问题
  2. enum to IEnumerableT
  3. 二 ASP.NET AutoPostBack
  4. System calls
  5. commons-fileupload文件上传
  6. 《疯狂Java讲义》(十八)---- JAR文件
  7. 如何批量转换图片格式?怎样统一修改图片格式?
  8. 如何在idea中设置Tomcat热部署
  9. 站在巨人肩膀上——vb.net学习
  10. 2018年迎春杯复赛入围名单(三年级)
  11. Python之生成器练习
  12. vue 根据身份证号获取出生年月,性别,年龄
  13. 深度学习平台的搭建(anaconda-pytorch-pycharm)
  14. 很抱歉,EXCEL遇到错误,使其无法正常工作,因此需要关闭EXCEL。是否希望我们立即修复?...
  15. 佛山c语言培训学校,佛山C语言培训:如何轻松学习C语言?
  16. 钉钉工作流报错:50001流程处理异常:审批系统错误,原因为【{0}】
  17. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现
  18. Java实现Excel表格数据的导入(兼容xls与xlsx)
  19. 逆袭之路——python学习笔记【day08】
  20. DBeaver连接(人大金仓/达梦)数据库 ,达梦、人大金仓数据库可视化工具

热门文章

  1. Android模拟点击事件
  2. lru调度算法例题_关于调度算法-例题解析
  3. 使用Delphi实现票据精确打印
  4. 开独立网店最重要的两个环节
  5. ISCC 2019 部分 Writeup
  6. UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)
  7. 延长SSD寿命——Trim指令的作用及其原理的探索
  8. 电动汽车动力电池直流内阻和交流内阻
  9. MySQL报错——Windows无法启动MySQL服务(位于本地计算机上)。错误⒉系统找不到指定的文件。、windows无法启动MySQL服务出现1053错误解决方法
  10. 宠物购物系统/宠物商城