精华内容
下载资源
问答
  • 常用的数据结构有哪些

    千次阅读 2018-12-07 13:27:18
    (1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构典型:数组、栈、队列和线性表。 (2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关...

    我们之前已经知道,数据结构就是计算机存储,组织数据的方式。我们根据存储方式可将数据结构大概分成图1所示以下几种:

         图1

    (1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的有:数组、栈、队列和线性表。

    (2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆。

    (3)图形结构:在图形结构中,允许多个结点之间相关,称为“多对多”关系。

    (4)哈希表结构:称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映射函数称为哈希函数(也称为散列函数),映射过程称为哈希化,存放记录的数组叫做散列表。

    不管什么样的数据结构,它们基本上都有如下的基本功能:

      ①、如何插入一条新的数据项

      ②、如何寻找某一特定的数据项

      ③、如何删除某一特定的数据项

      ④、如何迭代的访问各个数据项,以便进行显示或其他操作

    图2所示是各种数据结构的异同,大家先有个印象,后面我会逐一去介绍。

      图2

    注:以上图片来源于网络。

     

    展开全文
  • 常见的数据结构有哪些?

    千次阅读 2020-06-09 19:01:16
    1.一共八大数据结构分类 1.数组 2.队列 3.链表 i.单链表 ii.双向链表 iii.循环链表 4.树 5.散列表 6.堆 7.栈 8.图 辅助理解 1、详细说下几个数据结构 数组 简单 栈 先进后出 队列 先进先出 链表 ...

    1.一共八大数据结构分类

    	1.数组
    	2.队列
    	3.链表
    		i.单链表
    		ii.双向链表
    		iii.循环链表
    	4.树
    	5.散列表
    	6.堆
    	7.栈
    	8.图
    

    辅助理解

    1、详细说下几个数据结构
    数组
    简单


    先进后出

    队列
    先进先出

    链表

    单链表:

    链表中的元素的指向只能指向链表中的下一个元素或者为空,元素之间不能相互指向。也就是一种线性链表。
    双向链表:

    是这样一个有序的结点序列,每个链表元素既有指向下一个元素的指针,又有指向前一个元素的指针,其中每个结点都有两种指针,即left和right。left指针指向左边结点,right指针指向右边结点。
    循环链表 :

    是在单向链表和双向链表的基础上,将两种链表的最后一个结点指向第一个结点从而实现循环。

    散列表

    散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

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

    堆中某个节点的值总是不大于或不小于其父节点的值;
    堆总是一棵完全二叉树。

    图是由结点的有穷集合V和边的集合E组成

    按照顶点指向的方向可分为无向图和有向图
    八大数据结构

    展开全文
  • 上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈、队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见的基本数据...

    上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈、队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~
    首先,先来回顾下C语言中常见的基本数据类型吧O(∩_∩)O
    C语言的基本数据类型有:整型int,浮点型float,字符型char等等
    在这里插入图片描述

    添加描述
    那么,究竟什么是数据结构呢?
    数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合
    大部分数据结构的实现都需要借助C语言中的指针和结构体类型
    下面,进入今天的重点啦O(∩_∩)O几种常见的数据结构
    (1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的有:数组、栈、队列和线性表
    (2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆
    (3)图形结构:在图形结构中,允许多个结点之间相关,称为“多对多”关系
    下面分别对这几种数据结构做一个简单介绍:
    1、线性数据结构:典型的有:数组、栈、队列和线性表
    (1)数组和链表
    a、数组:存放着一组相同类型的数据,需要预先指定数组的长度,有一维数组、二维数组、多维数组等
    b、链表:链表是C语言中一种应用广泛的结构,它采用动态分配内存的形式实现,用一组任意的存储单元存放数据元素链表的,一般为每个元素增设指针域,用来指向后继元素
    c、数组和链表的区别:
    从逻辑结构来看:数组必须事先定义固定的长度,不能适应数据动态地增减的情况;链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项(数组中插入、删除数据项时,需要移动其它数据项)
    从内存存储来看:(静态)数组从栈中分配空间(用NEW创建的在堆中), 对于程序员方便快速,但是自由度小;链表从堆中分配空间, 自由度大但是申请管理比较麻烦
    从访问方式来看:数组在内存中是连续存储的,因此,可以利用下标索引进行随机访问;链表是链式存储结构,在访问元素的时候只能通过线性的方式由前到后顺序访问,所以访问效率比数组要低
    (2)栈、队列和线性表:可采用顺序存储和链式存储的方法进行存储
    顺序存储:借助数据元素在存储空间中的相对位置来表示元素之间的逻辑关系
    链式存储:借助表示数据元素存储地址的指针表示元素之间的逻辑关系
    a、栈:只允许在序列末端进行操作,栈的操作只能在栈顶进行,一般栈又被称为后进先出或先进后出的线性结构
    顺序栈:采用顺序存储结构的栈称为顺序栈,即需要用一片地址连续的空间来存储栈的元素,顺序栈的类型定义如下:

    在这里插入图片描述
    添加描述
    链栈:采用链式存储结构的栈称为链栈:
    在这里插入图片描述

    添加描述
    b、队列:只允许在序列两端进行操作,一般队列也被称为先进先出的线性结构
    循环队列:采用顺序存储结构的队列,需要按队列可能的最大长度分配存储空空,其类型定义如下:

    在这里插入图片描述
    添加描述
     链队列:采用链式存储结构的队列称为链队列,一般需要设置头尾指针只是链表的头尾结点:

    在这里插入图片描述
    添加描述
    c、线性表:允许在序列任意位置进行操作,线性表的操作位置不受限制,线性表的操作十分灵活,常用操作包括在任意位置插入和删除,以及查询和修改任意位置的元素

    顺序表:采用顺序存储结构表示的线性表称为顺序表,用一组地址连续的存储单元一次存放线性表的数据元素,即以存储位置相邻表示位序相继的两个元素之间的前驱和后继关系,为了避免移动元素,一般在顺序表的接口定义中只考虑在表尾插入和删除元素,如此实现的顺序表也可称为栈表:
    在这里插入图片描述

    添加描述

    线性表:一般包括单链表、双向链表、循环链表和双向循环链表
    单链表:
    在这里插入图片描述

    添加描述

    双向链表:

    在这里插入图片描述

    添加描述
    线性表两种存储结构的比较:
    顺序表:
     优点:在顺序表中,逻辑中相邻的两个元素在物理位置上也相邻,查找比较方便,存取任一元素的时间复杂度都为O(1)
     缺点:不适合在任意位置插入、删除元素,因为需要移动元素,平均时间复杂度为O(n)
    链表:
     优点:在链接的任意位置插入或删除元素只需修改相应指针,不需要移动元素;按需动态分配,不需要按最大需求预先分配一块连续空空
     缺点:查找不方便,查找某一元素需要从头指针出发沿指针域查找,因此平均时间复杂度为O(n)
    2、树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆
    (1)二叉树:二叉树是一种递归数据结构,是含有n(n>=0)个结点的有限集合,二叉树具有以下特点:
    二叉树可以是空树;二叉树的每个结点都恰好有两棵子树,其中一个或两个可能为空;二叉树中每个结点的左、右子树的位置不能颠倒,若改变两者的位置,就成为另一棵二叉树
    (2)完全二叉树:从根起,自上而下,自左而右,给满二叉树的每个结点从1到n连续编号,如果每个结点都与深度为k的满二叉树中编号从1至n的结点一一对应,则称为完全二叉树
    a、采用顺序存储结构:用一维数组存储完全二叉树,结点的编号对于与结点的下标(如根为1,则根的左孩子为2i=21=2,右孩子为2i+1=21+1=2)

    在这里插入图片描述
    添加描述

    b、采用链式存储结构:
    二叉链表:

    在这里插入图片描述
    添加描述

    三叉链表:它的结点比二叉链表多一个指针域parent,用于执行结点的双亲,便于查找双亲结点

    在这里插入图片描述
    添加描述

    两种存储结构比较:对于完全二叉树,采用顺序存储结构既能节省空间,又可利用数组元素的下标值确定结点在二叉树中的位置及结点之间的关系,但采用顺序存储结构存储一般二叉树容易造成空间浪费,链式结构可以克服这个缺点
    (3)二叉查找树:二叉查找树又称二叉排序树,或者是一课空二叉树,或者是具有如下特征的二叉树:
    a、若它的左子树不空,则左子树上所有结点的值均小于根结点的值
    b、若它的右子树不空,则右子树上所有结点的值均大于根结点的值
    c、它的左、右子树也分别是二叉查找树
    (4)平衡二叉树:平衡二叉查找树简称平衡二叉树,平衡二叉树或者是棵空树,或者是具有下列性质的二叉查找树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1

    在这里插入图片描述
    添加描述

    平衡二叉树的失衡及调整主要可归纳为下列四种情况:LL型、RR型、LR型、RL型
    (5)树:树是含有n(n>=0)个结点的有限集合,在任意一棵非空树种: a、有且仅有一个特定的称为根的结点
    b、当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且T1,T2,…,Tm称为根的子树
    (6)堆:堆是具有以下特性的完全二叉树,其所有非叶子结点均不大于(或不小于)其左右孩子结点。若堆中所有非叶子结点均不大于其左右孩子结点,则称为小顶堆(小根堆),若堆中所有非叶子结点均不小于其左右孩子结点,则称为大顶堆(大根堆)

    在这里插入图片描述
    添加描述

    (7)并查集:并查集是指由一组不相交子集所构成的集合,记作:S={S1,S2,S3,…,Sn}
    (8)B树
    3、图形结构:在图形结构中,允许多个结点之间相关,称为“多对多”关系,可分为有向图和无向图


    一些相关的视频资料便于大家学习
    C语言与数据结构的经典实战案例
    http://www.makeru.com.cn/live/5413_2014.html?s=45051
    结构体普及与应用
    http://www.makeru.com.cn/live/5413_1909.html?s=45051
    C语言玩转链表
    http://www.makeru.com.cn/live/1392_338.html?s=45051
    C高级之结构体
    http://www.makeru.com.cn/live/1392_656.html?s=45051
    循环链表及线性表的应用
    http://www.makeru.com.cn/course/details/1902?s=45051

    展开全文
  • 数据结构:八种数据结构大全!

    千次阅读 多人点赞 2021-07-29 12:36:10
    常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等; 1.2 数据结构的分类 1.2.1 排列方式 1)集合 集合:数据结构中的...

    数据结构

    1.1 数据结构概述

    数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等;

    在这里插入图片描述

    1.2 数据结构的分类

    1.2.1 排列方式

    1)集合

    集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;

    在这里插入图片描述

    2)线性结构

    线性结构:数据结构中的元素存在一对一的相互关系;

    在这里插入图片描述

    3)树形结构

    树形结构:数据结构中的元素存在一对多的相互关系;

    在这里插入图片描述

    4)图形结构

    图形结构:数据结构中的元素存在多对多的相互关系;

    在这里插入图片描述

    1.2.2 逻辑结构

    数据结构按逻辑上划分为线性结构非线性结构

    • 线性结构有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。

    典型的线性表有:链表、栈和队列。它们共同的特点就是数据之间的线性关系,除了头结点和尾结点之外,每个结点都有唯一的前驱和唯一的后继,也就是所谓的一对一的关系。

    • 非线性结构:对应于线性结构,非线性结构也就是每个结点可以有不止一个直接前驱和直接后继。常见的非线性结构包括:树、图等。

    1.3 数据结构的实现

    1.2.1 数组

    • 数组(Array):数组是有序元素的序列,在内存中的分配是连续的,数组会为存储的元素都分配一个下标(索引),此下标是一个自增连续的,访问数组中的元素通过下标进行访问;数组下标从0开始访问;

    • 数组的优点是:查询速度快;

    在这里插入图片描述

    • 数组的缺点是:删除增加、删除慢;由于数组为每个元素都分配了索引且索引是自增连续的,因此一但删除或者新增了某个元素时需要调整后面的所有元素的索引;

    新增一个元素40到3索引下标位置:

    在这里插入图片描述

    删除2索引元素:

    在这里插入图片描述

    总结:数组查询快,增删慢,适用于频繁查询,增删较少的情况;

    1.2.2 链表

    • 链表(Linked List):链表是由一系列节点Node(也可称元素)组成,数据元素的逻辑顺序是通过链表的指针地址实现,通常情况下,每个节点包含两个部分,一个用于存储元素的内存地址,名叫数据域,另一个则指向下一个相邻节点地址的指针,名叫指针域;根据链表的指向不同可分为单向链表、双向链表、循环链表等;我们本章介绍的是单向链表,也是所有链表中最常见、最简单的链表;

    链表的节点(Node):

    在这里插入图片描述

    完整的链表:

    在这里插入图片描述

    • 链表的优点:新增节点、删除节点快;

    在链表中新增一个元素:

    在这里插入图片描述

    在单向链表中,新增一个元素最多只会影响上一个节点,比在数组中的新增效率要高的多;

    在链表中删除一个元素:

    在这里插入图片描述

    • 链表的缺点:
      • 1)查询速度慢,查询从头部开始一直查询到尾部,如果元素刚好是在最尾部那么查询效率势必非常低;
      • 2)链表像对于数组多了一个指针域的开销,内存相对占用会比较大;

    总结:数据量较小,需要频繁增加,删除操作的场景,查询操作相对较少;

    1.2.3 栈

    • 栈(Stack):是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出从栈顶放入元素的操作叫入栈(压栈),取出元素叫出栈(弹栈)。

    入栈操作:

    在这里插入图片描述

    出栈操作:

    在这里插入图片描述

    栈的特点:先进后出,Java中的栈内存就是一个栈的数据结构,先调用的方法要等到后调用的方法结束才会弹栈(出栈);

    1.2.4 队列

    • 队列(Queue):队列与栈一样,也是一种线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。队列的特点是先进先出,从一端放入元素的操作称为入队,取出元素为出队;

    在这里插入图片描述

    队列的特点:先进先出;

    1.2.5 树

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

    • 1)每个节点有0个或多个子节点;
    • 2)没有父节点的节点称为根节点;
    • 3)每一个非根节点有且只有一个父节点;
    • 4)除了根节点外,每个子节点可以分为多个不相交的子树;
    • 5)右子树永远比左子树大,读取顺序从左到右;

    树的分类有非常多种,平衡二叉树(AVL)、红黑树RBL(R-B Tree)、B树(B-Tree)、B+树(B+Tree)等,但最早都是由二叉树演变过去的;

    二叉树的特点:每个结点最多有两颗子树

    在这里插入图片描述

    1.2.6 堆

    • 堆(Heap):堆可以看做是一颗用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。

    在这里插入图片描述

    堆的特性:如果一个结点的位置为k,则它的父结点的位置为[k/2],而它的两个子结点的位置则分别为2k和2k+1。这样,在不使用指针的情况下,我们也可以通过计算数组的索引在树中上下移动:从arr[k]向上一层,就令k等于k/2,向下一层就令k等于2k或2k+1。

    堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆;

    (ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1)满足前者的表达式的成为小顶堆(小根堆),满足后者表达式的为大顶堆(大根堆),很明显我们上面画的堆数据结构是一个大根堆;

    大小根堆数据结构图:

    在这里插入图片描述

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

    1.2.7 散列表

    • 散列表(Hash),也叫哈希表,是根据键和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。它利用数组支持按照下标访问的特性,所以散列表其实是数组的一种扩展,由数组演化而来。

    散列表首先需要根据key来计算数据存储的位置,也就是数组索引的下标;

    • HashValue=hash(key)

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

    在这里插入图片描述

    在散列表中,左边是个数组,数组的每个成员包括一个指针,指向一个链表的头,当然这个链表可能为空,也可能元素很多。我们根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素。

    1.2.8 图

    • 图(Graph):图是一系列顶点(元素)的集合,这些顶点通过一系列边连接起来组成图这种数据结构。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。

    图分为有向图和无向图:

    • 有向图:边仅仅连接两个顶点,没有其他含义;
    • 无向图:边不仅连接两个顶点,并且具有方向;

    在这里插入图片描述

    例如,我们可以把图这种数据结构看做是一张地图:

    地图中的城市我们看做是顶点,高铁线路看做是边;很显然,我们的地图是一种无向图,以长沙到上海为例,经过的城市有长沙、南昌、杭州、上海等地;那么从上海也可以按照原有的路线进行返回;

    在这里插入图片描述

    实现了图这种数据结构之后我们可以在此数据结构上做一些复杂的算法计算,如广度优先搜索算法、深度优先搜索算法等;

    • 广度搜索:搜索到一个顶点时,先将此顶点的所有子顶点全部搜索完毕,再进行下一个子顶点的子顶点搜索;

    在这里插入图片描述

    例如上图:以武汉为例进行广度搜索,

    1)首先搜索合肥、南昌、长沙等城市;

    2)通过合肥搜索到南京;

    3)再通过南昌搜索到杭州、福州,

    4)最终通过南京搜索到上海;完成图的遍历搜索;

    不通过南京搜索到杭州是因为已经通过南昌搜索到杭州了,不需要再次搜索;

    • 深度搜索:搜索到一个顶点时,先将此顶点某个子顶点搜索到底部(子顶点的子顶点的子顶点…),然后回到上一级,继续搜索第二个子顶点一直搜索到底部;

    在这里插入图片描述

    例如上图:以武汉为例进行深度搜索,

    1)首先搜索合肥、南京、上海等城市;

    2)回到武汉,进行第二子顶点的搜索,搜索南昌、杭州等地;

    3)回到南昌,搜索福州;

    4)回到武汉,搜索长沙;

    图是一种比较复杂的数据结构,在存储数据上有着比较复杂和高效的算法,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构。我们本次了解到这里即可;

    记得点赞!!!

    展开全文
  • 数据结构在实际应用中非常常见,现在各种算法基本都牵涉到数据结构,因此,掌握数据结构算是软件工程师的必备技能。 一、什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一...
  • 数据结构分类及八种常见数据结构

    千次阅读 2020-05-09 11:04:00
    数据结构分类 数据的逻辑结构 1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2.线性结构:数据结构中的元素存在一对一的相互关系; 3.树形结构:数据结构中的元素存在一对多的...
  • 数据结构与算法必知基础知识

    千次阅读 多人点赞 2021-01-06 22:58:12
    数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低...
  • 数据结构面试经典问题汇总

    千次阅读 多人点赞 2020-05-26 16:23:13
    数据结构面试经典问题汇总参考资源:基础深入补充: 参考资源: 基础 数据结构常见面试题 深入 数据结构面试题(三) 数据结构面试必问 数据结构算法常见面试考题 补充: 1.数组和链表的区别,请详细解释。 从逻辑...
  • 数据结构知识整理

    万次阅读 多人点赞 2018-07-30 18:50:47
    1.数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等的学科。 2.数据结构涵盖的内容: 3.基本概念和术语: 数据:对客观事物的符号表示,在计算机科学中是指所有能...
  • Java常见的8种数据结构

    万次阅读 多人点赞 2020-09-18 16:41:54
    这 8 种数据结构有什么区别呢? ①、数组 优点: 按照索引查询元素的速度很快; 按照索引遍历数组也很方便。 缺点: 数组的大小在创建后就确定了,无法扩容; 数组只能存储一种类型的数据; ...
  • 数据结构与算法中的经典算法

    万次阅读 多人点赞 2018-07-19 21:47:12
    数据结构与算法之经典算法 常见数据结构与算法整理总结(上) 常见数据结构与算法整理总结(下) 二、针对性参考 1) 排序 数据结构与算法之经典排序 2)二叉树 数据结构与算法之二叉树+遍历+哈夫曼树 ...
  • 数据结构一 (简介)

    千次阅读 多人点赞 2018-07-12 17:09:00
    转载请标明出处: ...本文出自:【openXu的博客】 1、什么是数据结构   数据结构主要学习用计算机实现数据组织和数据处理的方法;...  一个好的程序无非是选择一个合理的数据结构和好的算法,而好的算法...
  • 数据结构基础概念篇

    万次阅读 多人点赞 2017-11-14 13:44:24
    数据结构一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能...
  • 数据结构数据结构三要素

    千次阅读 2020-07-01 13:45:24
    对于线性表、集合、树、图这四种典型数据结构,他们分别以下特点: 集合结构:数据元素之间只存在 “同属于一个集合”的关系。 线性结构:数据元素之间只存在“一对一”的关系。 树形结构:数据元素之间存在...
  • 数据结构——数据结构的三大结构

    千次阅读 2019-09-02 22:53:14
    数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。 1.1 数据结构的逻辑结构 逻辑结构指人对数据之间关系的理解和看法,逻辑结构和计算机无关。 逻辑结构: 1、 集合结构 ...
  • 汇编语言数据结构

    热门讨论 2011-09-12 14:09:23
    本书简明扼要地介绍了各种典型数据结构及其在汇编语言(编译器MASM32v10)中的实现代码。主要内容包括:数组、栈与队列、链表、树、哈希表、图等。
  • 常用数据结构——队列及其应用

    万次阅读 2017-09-28 11:39:19
    队列和栈作为一种最简单最基本的常用数据结构,可以说在许多方面都应用广泛。在程序运行时,他们可以保存程序运行路径中各个点的信息,以便用于回溯操作或其他需要访问已经访问过的节点信息的操作。这里对队列的特点...
  • 常用八大数据结构总结及应用场景-附示例截图

    千次阅读 多人点赞 2020-08-03 21:32:42
    什么是数据结构? 官方解释:数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 大白话:数据结构就是把数据元素按照一定的关系组织起来的集合,用来组成和...
  • 数据结构数据结构中常用的树

    万次阅读 多人点赞 2016-07-31 21:29:17
    声明:本文汇总了数据结构中一些常用的树,主要内容来自《数据结构(严蔚敏版)》和《算法导论》这两本教材。本文主要归纳出数据结构中常见的树的概念与简单的性质,并未给出具体的操作,如插入、删除、查找等。1、...
  • 一、学习数据结构有什么用?

    千次阅读 2017-03-03 11:52:00
    打算把数据结构跟算法的知识捋一捋,所以新建了个文集。 很多人都说这是内功,那学这个到底什么用呢,我找了几篇蛮道理的文章转了过来,来坚定下学习的信念。 我看完这几篇后觉得,学这个最重要的是学会了把现实中的...
  • 今天参加一个小考试,就是考的这一题,我竟然忘得很干净,拿出来数据结构书,再看一下。 数据结构----书上给的概念是:相互之间存在一种或多种特定关系的数据元素的集合。简单的就是:数据及数据之间的关系。 ...
  • 数据结构–七大查找算法总结

    万次阅读 多人点赞 2018-08-06 17:13:43
    数据结构–七大查找算法总结 2017年08月15日 21:06:17 阅读数:10610 ...
  • 数据结构学习-知识点总结(持续更新)

    万次阅读 多人点赞 2020-12-25 20:07:16
    数据结构学习记录第一章 绪论1.1 数据结构的基本概念数据结构的三要素:逻辑结构、存储结构(物理结构)、数据的运算。 逻辑结构分为线性结构和非线性结构。
  • 数据结构与算法(一):什么是数据结构

    千次阅读 多人点赞 2020-02-29 18:55:27
    数据结构入门,介绍一些数据结构的基本概念
  • 下面是整理的常用数据结构与算法相关内容,如错误,欢迎指出。 目录: 一、线性表 1.数组实现 2.链表 二、栈与队列 三、树与二叉树 1.树 2.二叉树基本概念 3.二叉查找树 4.平衡二叉树 5.红黑树 四、图 ....
  • 本书主教材按照面向对象程序设计的思想,根据作者多年的教学积累,系统地介绍各类数据结构的功能、表示和实现,对比各类数据结构适用的应用环境;结合实际问题展示算法设计的一般性模式与方法、算法实现的主流技巧,...
  • 数据结构(1)—— 数据结构的三大结构

    万次阅读 多人点赞 2016-09-07 22:49:23
    1 数据结构的三大结构计算机程序设计 = 数据结构 + 算法 数据结构研究变量的管理方式,算法研究解决特定问题的方法。 数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。1.1 数据...
  • Java数据结构与算法入门

    万次阅读 多人点赞 2018-04-29 11:53:50
    数据结构:Data_Structure,它是储存数据的一种结构体,在此结构中储存一些数据,而这些数据之间一定的关系。而各数据元素之间的相互关系,又包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。而...
  • 数据结构-图经典习题解析(一)

    千次阅读 2018-04-11 15:40:18
    树题目总结1、在一棵度为3的树中,度为3的节点个数为2,度为2的节点个数为1,则度为0的节点个数为(6)2、对某二叉树进行先序遍历的结果是ABDEFC,中序遍历的结果是DBFEAC,则后序遍历的结果是(DFEBCA)A为根节点...
  • 常见数据结构与算法整理总结(上)

    万次阅读 多人点赞 2018-08-06 18:23:14
    下面是自己整理的常用数据结构与算法相关内容,如错误,欢迎指出。 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表、栈、队列等都提供了较好的实现,就是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 477,507
精华内容 191,002
关键字:

典型的数据结构有哪些

数据结构 订阅