精华内容
下载资源
问答
  • 从逻辑上数据结构分类
    千次阅读
    2019-09-27 14:06:58

     

    最近在学习数据结构,有必要对自己这两天的学习做一个总结,今天就来总结下,数据结构的逻辑结构

    按照分类标准的不同,我们把数据结构分为逻辑机构和存储结构,今天主要讲解逻辑结构

    逻辑结构:是指数据对象中的数据元素之间的相互关系,主要分为以下四种结构

    1.集合结构

    集合结构中的数据元素处理同属于一个集合里,它们之间没有其他关系。各个数据元素是“平等”的,它们的共同属性是“同属于一个集合”。数据结构中的集合关系就类似于数学中的集合,满足集合的三个基本性质,确定性,互异性,无序性,而满足这个性质的应该只有C语言里的结构体满足这个条件,因为结构体里的数据无序,互异,确定。

     2.线性结构

    线性结构中的数据元素之间存在一对一的关系,满足这个关系的有  线性表(数组,vector,链表),队列,栈,串

    下面具体解释下原因:先看定义

    线性表:零个或者是多个数据元素的有限序列。

    下面对其定义进行下充分的解读,首先它是一个序列,也就是说元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且之后一个前驱和后继。然后线性表强调是有限的,当元素个数为零个时称为空表。

    所以线性表的元素之间是满足一对一的关系的

    栈:栈(stack)是限定仅在表尾进行插入和删除操作的线性表,是一种特殊的线性表,所以属于线性结构

    队列:队列(queue)是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表,是一种特殊的线性表,所以属于线性结构

    串:串(string)是由零个或者多个字符组成的有限序列。

    看定义我们就能清楚的看到,串是特殊的线性表,只是把定义中的数据元素换成了特定的字符元素,所以串也是属于线性结构

    一般情况下,把栈,队列,串,分为一组叫受限线性表。

    3.树形结构

    树形结构中的数据元素之间存在一种一对多的层次关系,一般分为一般树和二叉树,满足这个关系的有 set,map

    4.图形结构

    图形结构的数据元素是多对多的关系,一般分为有向图和无向图,

    最后可以画一个思维导图进行下总结

    由于暂时没有找到之前画的图,这里有一处错误更正,集合的常见结构不是结构体,结构体本身不算是数据结构,因为结构体里存放的不是相同的数据元素,这里的集合应该是哈希表,又叫散列表。

    更多相关内容
  • 数据结构:八大数据结构分类

    万次阅读 多人点赞 2018-09-05 18:23:28
    数据结构分类 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。 常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示: 每一种数据结构都...

    本文目录:

    数据结构分类

    数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
    常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:
    这里写图片描述
    每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。

    1、数组

    数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。

    int[] data = new int[100];data[0]  = 1;
    

    优点:
    1、按照索引查询元素速度快
    2、按照索引遍历数组方便

    缺点:
    1、数组的大小固定后就无法扩容了
    2、数组只能存储一种类型的数据
    3、添加,删除的操作慢,因为要移动其他的元素。

    适用场景:
    频繁查询,对存储空间要求不大,很少增加和删除的情况。

    2、栈

    栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。
    这里写图片描述
    栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以,栈常应用于实现递归功能方面的场景,例如斐波那契数列。

    3、队列

    队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队,示例图如下:
    这里写图片描述
    使用场景:因为队列先进先出的特点,在多线程阻塞队列管理中非常适用。

    4、链表

    链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。
    这里写图片描述
    链表的优点:
    链表是很常用的一种数据结构,不需要初始化容量,可以任意加减元素;
    添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快;

    缺点:
    因为含有大量的指针域,占用空间较大;
    查找元素需要遍历链表来查找,非常耗时。

    适用场景:
    数据量较小,需要频繁增加,删除操作的场景

    5、树

    是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做 “树” 是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

    • 每个节点有零个或多个子节点;
    • 没有父节点的节点称为根节点;
    • 每一个非根节点有且只有一个父节点;
    • 除了根节点外,每个子节点可以分为多个不相交的子树;

    在日常的应用中,我们讨论和用的更多的是树的其中一种结构,就是二叉树
    这里写图片描述
    二叉树是树的特殊一种,具有如下特点:

    1、每个结点最多有两颗子树,结点的度最大为2。
    2、左子树和右子树是有顺序的,次序不能颠倒。
    3、即使某结点只有一个子树,也要区分左右子树。

    二叉树是一种比较有用的折中方案,它添加,删除元素都很快,并且在查找方面也有很多的算法优化,所以,二叉树既有链表的好处,也有数组的好处,是两者的优化方案,在处理大批量的动态数据方面非常有用。

    扩展:
    二叉树有很多扩展的数据结构,包括平衡二叉树、红黑树、B+树等,这些数据结构二叉树的基础上衍生了很多的功能,在实际应用中广泛用到,例如mysql的数据库索引结构用的就是B+树,还有HashMap的底层源码中用到了红黑树。这些二叉树的功能强大,但算法上比较复杂,想学习的话还是需要花时间去深入的。

    6、散列表

    散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。

    记录的存储位置=f(key)

    这里的对应关系 f 成为散列函数,又称为哈希 (hash函数),而散列表就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里,这种存储空间可以充分利用数组的查找优势来查找元素,所以查找的速度很快。

    哈希表在应用中也是比较常见的,就如Java中有些集合类就是借鉴了哈希原理构造的,例如HashMap,HashTable等,利用hash表的优势,对于集合的查找元素时非常方便的,然而,因为哈希表是基于数组衍生的数据结构,在添加删除元素方面是比较慢的,所以很多时候需要用到一种数组链表来做,也就是拉链法。拉链法是数组结合链表的一种结构,较早前的hashMap底层的存储就是采用这种结构,直到jdk1.8之后才换成了数组加红黑树的结构,其示例图如下:
    这里写图片描述
    从图中可以看出,左边很明显是个数组,数组的每个成员包括一个指针,指向一个链表的头,当然这个链表可能为空,也可能元素很多。我们根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素。

    哈希表的应用场景很多,当然也有很多问题要考虑,比如哈希冲突的问题,如果处理的不好会浪费大量的时间,导致应用崩溃。

    7、堆

    堆是一种比较特殊的数据结构,可以被看做一棵树的数组对象,具有以下的性质:

    • 堆中某个节点的值总是不大于或不小于其父节点的值;

    • 堆总是一棵完全二叉树。

    将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。

    堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。
    (ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4…n/2),满足前者的表达式的成为小顶堆,满足后者表达式的为大顶堆,这两者的结构图可以用完全二叉树排列出来,示例图如下:
    这里写图片描述
    因为堆有序的特点,一般用来做数组中的排序,称为堆排序。

    8、图

    图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

    按照顶点指向的方向可分为无向图和有向图:
    这里写图片描述
    这里写图片描述
    图是一种比较复杂的数据结构,在存储数据上有着比较复杂和高效的算法,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构,这里不做展开,读者有兴趣可以自己学习深入。

    展开全文
  • 数据的逻辑结构数据的存储结构 数据的逻辑结构数据的存储结构 1.... 1) 顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元⾥,元素之间的关系由存储单元的邻接关系来体现。 其优点是可以实现随
  • 数据结构中的逻辑结构和物理结构

    千次阅读 多人点赞 2019-06-18 10:56:28
    按照视点的不同,我们把数据结构分为逻辑结构和物理结构。 一、逻辑结构:是指数据对象中数据元素之间的相互关系。 逻辑结构分为以下四种: 1、集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间...

    按照视点的不同,我们把数据结构分为逻辑结构和物理结构。

    一、逻辑结构:是指数据对象中数据元素之间的相互关系。

    逻辑结构分为以下四种

    1、集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系

    2、线性结构:线性结构中的数据元素之间是一对一的关系。

    3、树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。

    4、图形结构:图形结构的数据元素是多对多的关系。

     

    二、物理结构:是指数据的逻辑结构在计算机中的存储形式。

    分为:顺序存储和链式存储。

     1、顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。

     2、链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。    数据元素的存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关的联数据元素的位置。

    逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目的就是将数据及其逻辑关系存储到计算机的内存中

    展开全文
  • 数据结构--逻辑结构

    千次阅读 2019-05-15 18:03:41
    数据结构分类 线性结构 线性表 非线性结构 树 图 集合 线性结构 定义:数据结构中的元素存在一对一的对应关系,有唯一的首位,并且每个数据的上线衔接是唯一的。 常见的顺序结构有:线性表、栈、队列、双...

    数据结构分类

    1. 线性结构
      1. 线性表
    2. 非线性结构
      1. 集合

    线性结构

    定义:数据结构中的元素存在一对一的对应关系,有唯一的首位,并且每个数据的上线衔接是唯一的。
    常见的顺序结构有:线性表、栈、队列、双队列、一维数组(这里注意),串

    线性表在不同的存储结构下体现不同,顺序存储结构下,体现为顺序表,链表存储结构下,单向链表,双向链表等都是线性表

    非线性结构

    树结构

    树结构是一类重要的非线性数据结构,其中以二叉树最为常用,树是以为分支关系定义的层次结构,它为计算机应用中出现的具有层次关系或者分支关系的数据提供了一种自然的表示方法,用树结构描述的信息模型在客观世界普遍存在。
    在这里插入图片描述

    1. 二叉树
      每一个结点下都有左右之分的树结构,没一个结点下最多两个子结点,最少没有
      在这里插入图片描述
      完全二叉树:所有子结点都在左侧
      在这里插入图片描述
      满二叉树:终端结点(叶结点)都在最底层,并且每个父结点下都有两个子结点

    在这里插入图片描述

    1. B树
      定义:B树是一种平衡多叉树,主要用于查询。m阶B树(每个结点下最多有m个子结点)满足如下条件:
      1. 根结点至少有两个子女
      2. 每个根结点所包含的关键字个数j满足:(m/2)-1 < j < m-1;
      3. 除根结点外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,古内部子树个数k满足:(m/2)<= k <= m;
      4. 所有的叶子结点都位于同一层
        上面的定义是百度百科上的,《算法导论》第3版第18章中的B树定义:
      5. 所有叶子结点到根结点的路径长度相同,即具有相同的高度;
      6. 每个非叶子和非根结点(即内部结点)至少有m-1个孩子结点;根至少2个孩子
      7. 每个结点最多有2m个孩子节点。
      8. 每个结点内的键都是递增的
      9. 每个结点的孩子比key的个数多1
        使用方法,查找数据时,将所有的非根结点中的关键字取出,然后找寻是否存在符合范围的根结点,再进行一一对比。
        在这里插入图片描述
    2. B+树
      定义:B+树是B树的改善结构,在满足B树的要求下,还满足如下要求:
      1. 有K个子树的中间结点包含K个元素(B树种是K-1个元素),每个元素不保存数据,只用来索引,所有的数据都存在在叶子结点
      2. 所有的叶子结点种包含了全部的元素的信息,及指向含有这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接
      3. 所有的中间节点元素都同时存在于子节点,在子结点中是最大(或最小)元素
        对比B树的优势:查找迅速,存储结构简单,查询稳定

    数据结构中的元素存在多对多的相互关系
    常见的数据机构有:有向无环图、二元决策图、无向图

    在这里插入图片描述

    集合

    定义:集合的定义是由一组无序且唯一(即不能重复)的项组成的。不包含任何元素的集合就叫做空集。
    在这里插入图片描述

    展开全文
  • 数据结构分类及八种常见数据结构

    千次阅读 2020-05-09 11:04:00
    数据结构分类 数据的逻辑结构 1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2.线性结构:数据结构中的元素存在一对一的相互关系; 3.树形结构:数据结构中的元素存在一对多的...
  • 数据结构分类大多可以有三种分类方式,分别是逻辑结构、物理结构、存储结构。一般来讲大多数都是以逻辑结构进行划分的。 线性结构 简单地说,线性结构就是表中各个结点具有线性关系。如果数据结构的语言来描述,...
  • 数据结构=逻辑结构(线性、非线性)+存储结构(顺序、链式、索引、散列) 1)逻辑结构:数据元素间抽象化的相互关系 2)存储结构:(物理结构),在计算机存储器中的存储形式 逻辑结构的分类: 1.按逻辑结构分为:...
  • 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.... 2.读入数据 ...例如:随着人工智能的不断发展,机器学习这门技术也越来越...(数据不..
  • 数据结构是什么?如何分类

    千次阅读 2021-12-16 01:07:46
    数据结构是数据元素、它们之间的关系以及可以应用于数据元素的操作的集合。在任何问题中,数据元素之间存在某种关系,这种数据元素相互之间的关系称为结构
  • 数据逻辑结构和存储结构

    千次阅读 2019-08-26 22:30:34
    数据逻辑结构是对数据元素之间逻辑关系的描述,它与数据在计算机中存储方式无关,根据数据元素之间的不同特性,可以对数据逻辑结构进行分类 分类1:(选型结构和非线性结构) 线性结构:有且只有一个开始节点和...
  • 数据结构——栈的详解

    万次阅读 多人点赞 2020-04-20 00:02:43
    栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集。他们是操作受限的线性表,因此,可称为限定性的数据结构。但数据类型角度看,他们是和...
  • 1.逻辑结构逻辑结构分为四种类型:集合结构,线性结构,树形结构,图形结构。 1.1 所谓集合结构: 集合结构中的元素关系,除了同属于一个集合这个关系以外,再无其他关系。 1.2 线性结构: 元素间的...
  • 数据结构基础知识(1)

    千次阅读 2020-10-10 19:28:33
    二叉树不是线性结构,完全二叉树是效率很高的数据结构,堆是一种完全二叉树或近似完全二叉树,效率极高 数据的逻辑结构反映的是数据元素之间的逻辑关系 逻辑结构就是数据之间的关系,而按数据之间的关系来说,逻辑...
  • 数据结构:八大常见数据结构

    千次阅读 2019-11-26 14:42:39
    数据结构目录: 一、结构分类 二、区别联系 1. 数组 2. 栈 ...数据结构是指,相互之间存在着一种或多种关系的...数据结构大多是以三种分类方式分类,分别是逻辑结构,物理结构,存储结构,一般来讲大多是以逻辑结...
  • 在 数据结构(一)中,我们了解了什么是数据结构的概念...一、数据结构逻辑结构  逻辑结构:数据元素之间的逻辑关系;  简单理解:逻辑结构其实和计算机是没有关系的,现在假设你要建一个漂亮的别墅,
  • 数据逻辑结构包括那些?

    万次阅读 2019-06-30 18:26:15
    在不产生混淆的前提下,常将数据的逻辑结构简称为数据结构。数据的逻辑结构有两大类: (1)线性结构 线性结构的逻辑特征是:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个...
  • 数据结构分类

    千次阅读 2020-02-20 18:52:33
    数据结构(Data Structure):是指相互之间存在一种或多种特定关系的数据元素集合,是带有结构的数据元素的集合,它指的是数据元素之间的相互关系,即数据的组织形式。 从逻辑结构来分 数据结构可分为线性结构和非...
  • 数据结构:八种数据结构大全

    万次阅读 多人点赞 2021-07-29 12:36:10
    数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;...1.2 数据结构分类 1.2.1 排列方式 1)集合 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2)线性结构 线性
  • 一、数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括: 集合 数据结构中的元素之间除了“同属一个...
  • 数据逻辑结构数据的存储结构

    千次阅读 2019-03-04 11:56:55
    1. 数据逻辑结构 数据逻辑结构是指数据...数据逻辑结构分类见图1-1。 集合结构中的数据元素之间除了 “同属于一个集合”的关系外,别无其他关系。 线性结构结构中的数据元素之间只存在一对一的关系。 树...
  • 《算法和数据结构》题海战术篇

    万次阅读 多人点赞 2021-07-15 06:13:43
    O ( n ) O(n) O(n) 删除时间复杂度: O ( 1 ) O(1) O(1) 4、哈希表 内存结构:哈希表本身连续,但是衍生出来的结点逻辑上不连续 实现难度:一般 下标访问:不支持 分类:正数哈希、字符串哈希、滚动哈希 插入时间...
  • 学算法先学数据结构?是否是无稽之谈?

    万次阅读 多人点赞 2022-03-02 08:30:55
    任何一个简单的算法都是需要数据结构来支撑的,比如最简单的算法, 1、数组 内存结构:内存空间连续 实现难度:简单 下标访问:支持 分类:静态数组、动态数组 插入时间复杂度: O ( n ) O(n) O(n) 查找时间复杂度:...
  • 数据逻辑结构 数据逻辑结构数据元素之间的逻辑关系(和实现无关)。 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。 ...
  • 3-数据逻辑结构

    千次阅读 2018-05-25 00:08:40
      数据结构分类是分为逻辑结构和物理结构两方面,前面我们已经介绍过了逻辑结构,现在我们再来看一下逻辑结构的几种类型,如图1所示: 图1-数据的逻辑结构   我们从上可以发现:上面这三种逻辑结构之间的...
  • 根据此书所做随笔笔记。 一、绪论 1.1、数据机构的研究内容 ...由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。 1.
  • 逻辑回归案例二:鸢尾花数据分类,决策边界绘制逐步代码讲解1 数据加载2 数据EDA3 模型创建及应用3.1 数据切分3.2 创建模型与分类3.3 决策边界绘制3.3.1 二分类决策边界绘制3.3.2 多分类决策边界绘制3.3.3 三维决策...
  • 数据结构方面的储存结构分类 顺序存储方法它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的...
  • 数据结构与算法

    千次阅读 2021-04-27 22:23:16
    1. 数据结构2. 算法3. 数据结构与算法的区别与联系 1. 数据结构   数据结构(Data Structure)是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 264,516
精华内容 105,806
关键字:

从逻辑上数据结构分类

数据结构 订阅