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

    2015-11-29 20:39:33
    线性结构:元素之间存在一对一关系常见类型: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插 入,删除操作. 树形...
    数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构;


    集合结构:除了同属于一种类型外,别无其它关系


    线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插
    入,删除操作.


    树形结构:元素之间存在一对多关系,常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等)


    图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意收起
    展开全文
  • 通过上节我们知道,数据结构是学习数据存储方式的一门学科,那么,数据存储方式哪几种呢?本节将对数据结构的学习内容做一个简要的总结。 数据结构大致包含以下几种存储结构: 线性表,还可细分为顺序表、链表、栈...

    通过上节我们知道,数据结构是学习数据存储方式的一门学科,那么,数据存储方式有哪几种呢?本节将对数据结构的学习内容做一个简要的总结。

    数据结构大致包含以下几种存储结构:
    线性表,还可细分为顺序表、链表、栈和队列;
    树结构,包括普通树,二叉树,线索二叉树等;
    图存储结构;

    下面对各种数据结构做详细讲解。
    线性表
    线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有一个小朋友和他拉手,具备这种“一对一”关系的数据就可以使用线性表来存储。

    手拉手的小朋友

    例如,存储类似 {1,3,5,7,9} 这样的数据时,各元素依次排列,每个元素的前面和后边有且仅有一个元素与之相邻(除首元素和尾元素),因此可以使用线性表存储。

    线性表并不是一种具体的存储结构,它包含顺序存储结构和链式存储结构,是顺序表和链表的统称。
    顺序表
    顺序表,简单地理解,就是常用的数组,只是换了个名字而已,例如使用顺序表存储 {1,3,5,7,9},如图 1 所示:

    顺序表结构
    图 1 顺序表结构
    由于顺序表结构的底层实现借助的就是数组,因此对于初学者来说,可以把顺序表完全等价为数组,但实则不是这样。数据结构是研究数据存储方式的一门学科,它囊括的都是各种存储结构,而数组只是各种编程语言中的基本数据类型,并不属于数据结构的范畴。

    链表
    我们知道,使用顺序表(底层实现靠数组)时,需要提前申请一定大小的存储空间,这块存储空间的物理地址是连续的,如图 1 所示。

    链表则完全不同,使用链表存储数据时,是随用随申请,因此数据的存储位置是相互分离的,换句话说,数据的存储位置是随机的。

    为了给各个数据块建立“依次排列”的关系,链表给各数据块增设一个指针,每个数据块的指针都指向下一个数据块(最后一个数据块的指针指向 NULL),就如同一个个小学生都伸手去拉住下一个小学生的手,这样,看似毫无关系的数据块就建立了“依次排列”的关系,也就形成了链表,如图 2 所示:

    链表结构
    图 2 链表结构
    栈和队列
    栈和队列隶属于线性表,是特殊的线性表,因为它们对线性表中元素的进出做了明确的要求。

    栈中的元素只能从线性表的一端进出(另一端封死),且要遵循“先入后出”的原则,即先进栈的元素后出栈。

    栈结构示意图
    图 3 栈结构示意图

    栈结构如图 3 所示,像一个木桶,栈中含有 3 个元素,分别是 A、B 和 C,从在栈中的状态可以看出 A 最先进的栈,然后 B 进栈,最后 C 进栈。根据“先进后出”的原则,3 个元素出栈的顺序应该是:C 最先出栈,然后 B 出栈,最后才是 A 出栈。

    队列中的元素只能从线性表的一端进,从另一端出,且要遵循“先入先出”的特点,即先进队列的元素也要先出队列。

    队列结构示意图
    图 4 队列结构示意图

    队列结构如图 4 所示,队列中有 3 个元素,分别是 A、B 和 C,从在队列中的状态可以看出是 A 先进队列,然后 B 进,最后 C 进。根据“先进先出”的原则,3 个元素出队列的顺序应该是 A 最先出队列,然后 B 出,最后 C 出。
    树存储结构
    树存储结构适合存储具有“一对多”关系的数据。

    家庭族谱
    图 5 家庭族谱

    如图 5 所示,其中张平只有一个父亲,但他却有两(多)个孩子,这就是“一对多”的关系,满足这种关系的数据可以使用树存储结构。
    图存储结构
    图存储结构适合存储具有“多对多”关系的数据。

    图存储结构示意图
    图 6 图存储结构示意图

    如图 6 所示,从 V1 可以到达 V2、V3、V4,同样,从 V2、V3、V4 也可以到达 V1,这就是“多对多”的关系,满足这种关系的数据可以使用图存储结构。

    展开全文
  • 1. 常见数据结构有哪些? 1.1 数组 数组是最常用数据结构,数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的。数组常用的场景:从数据库里读取雇员的信息存储为 EmployeeDetail[ ];把一...

    1. 常见的数据结构有哪些?

    1.1 数组

    数组是最常用的数据结构,数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的数组常用的场景有:从数据库里读取雇员的信息存储为 EmployeeDetail[ ];把一个字符串转换并存储到一个字节数组中便于操作和处理等等。尽量 把数组封装在一个类里,防止数据被错误的操作弄乱。另外,这一点也适合其他的数据结构。

    1.2 栈

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

    java中的new出来的对象存储在栈中, 但是对应的地址值在堆中.

    1.3 堆

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

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

    1.4 队列

    队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队.

    1.5 链表

    链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

    • 链表的优点:
      链表是很常用的一种数据结构,不需要初始化容量,可以任意加减元素;
      添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快;
    • 缺点:
      因为含有大量的指针域,占用空间较大;
      查找元素需要遍历链表来查找,非常耗时。
    • 适用场景:
      数据量较小,需要频繁增加,删除操作的场景

    1.6 树

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

    • 每个节点有零个或多个子节点;
    • 没有父节点的节点称为根节点;
    • 每一个非根节点有且只有一个父节点;
    • 除了根节点外,每个子节点可以分为多个不相交的子树;
      在日常的应用中,我们讨论和用的更多的是树的其中一种结构,就是二叉树。

    1.7 散列表(哈希表)

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

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

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

    哈希表在应用中也是比较常见的,就如Java中有些集合类就是借鉴了哈希原理构造的,例如HashMap,HashTable等,利用hash表的优势,对于集合的查找元素时非常方便的,然而,因为哈希表是基于数组衍生的数据结构,在添加删除元素方面是比较慢的,所以很多时候需要用到一种数组链表来做,也就是拉链法。拉链法是数组结合链表的一种结构,较早前的hashMap底层的存储就是采用这种结构,直到jdk1.8之后才换成了数组加红黑树的结构,

    1.8 图

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

    展开全文
  • 数据结构是计算机存储、组织数据的方式。对于特定的数据结构(例如数组),有些操作效率很高(读某个数组元素),有些操作效率很低(删除...常用数据结构有:数组、栈、队列、链表、图、树、前缀树、哈希表。 ...

    数据结构是计算机存储、组织数据的方式。对于特定的数据结构(例如数组),有些操作效率很高(读某个数组元素),有些操作效率很低(删除某个数组元素)。

    程序员的目标是为当前的问题选择最优的数据结构。数据是程序的核心要素,因此数据结构的价值不言而喻。无论在写什么程序,都需要与数据打交道,例如员工工资、股票价格、杂货清单或者电话本。

    在不同场景下,数据需要以特定的方式存储,我们有不同的数据结构可以满足我们的需求。常用的数据结构有:数组、栈、队列、链表、图、树、前缀树、哈希表。

    展开全文
  • (1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的:数组、栈、队列和线性表。 (2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关...
  • 1.一共八大数据结构分类 1.数组 2.队列 3.链表 i.单链表 ii.双向链表 iii.循环链表 4.树 5.散列表 6.堆 7.栈 8.图 辅助理解 1、详细说下几个数据结构 数组 简单 栈 先进后出 队列 先进先出 链表 ...
  • 数据结构:八大数据结构分类

    万次阅读 多人点赞 2018-09-05 18:23:28
    常用数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示: 每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。 1、数组 数组是可以再内存中连续存储多个元素的...
  • java数据结构有哪些

    万次阅读 多人点赞 2018-12-28 17:26:11
    Java中几种常用数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。 Collection---->Collections Map--...
  • 数据结构,计算机网络,数据库,计算机组成原理,操作系统这些在大学期间一定要掌握好来,因为现在互联网大厂面试都爱考察这些内容,一句话,计算机基础,yyds! 可能大家第一个问题是,这些课需要哪些先学? 讲真,...
  • 数据结构算法常见面试考题

    万次阅读 多人点赞 2018-11-08 09:29:44
    数据结构上几种树集中的讨论一下: 1.AVLtree 定义:最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)...
  •  MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。  我们知道,数据库查询是数据库的最主要功能之一,例如下面的SQL语句: ...
  • 基本的数据结构有哪些

    千次阅读 2019-09-03 11:01:06
    图的存储结构: 1,邻接矩阵(数组表达) 2,邻接表和十字链表,链表表达,主要表达向图 3,邻接 表,链表,无向图 最小生成树: prim(普里姆算法) kruskal(克鲁斯卡尔算法) 形成闭环就抛弃 队列: ...
  • 上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈、队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见的基本数据...
  • 【数据结构与算法】常见数据结构及基本操作

    万次阅读 多人点赞 2019-06-16 21:42:44
    数据结构与算法常见概念2.数据逻辑结构2.1线性结构2.2树形结构2.3图形结构2.4集合结构3.排序算法冒泡排序简单选择排序直接插入排序希尔排序堆排序归并排序快速排序4.查找算法顺序表查找有序表查找线性索引查找二叉...
  • 常用数据结构总结

    千次阅读 2018-04-18 21:49:29
    小明:最近常人讨论数据结构和算法,听他们讨论时总是感觉晕...我们先看一下常用数据结构和算法的整体内容。 1.数据的逻辑结构 集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其他关系。 ...
  • 最近在学习数据结构必要对自己这两天的学习做一个总结,今天就来总结下,数据结构的逻辑结构 按照分类标准的不同,我们把数据结构分为逻辑机构和存储结构,今天主要讲解逻辑结构 逻辑结构:是指数据对象中的...
  • 在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 “数据结构”作为...
  • Contiki常用数据结构

    千次阅读 2015-06-06 09:34:13
    Contiki常用数据结构 1. Packetbuf 得益于Contiki进程是非抢占的特性,Rime缓冲区将接收与发送的数据包存储在一个单一的缓冲区packetbuf,它的管理结构如图1.1所示,结合该图与源代码packetbuf.c可以很好地理解和...
  • 数据结构在实际应用中非常常见,现在各种算法基本都牵涉到数据结构,因此,掌握数据结构算是软件工程师的必备技能。 一、什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一...
  • 常用数据结构常用算法,

    万次阅读 多人点赞 2018-08-08 20:32:54
    1. 常见数据结构 人们进行程序设计时通常关注两个重要问题,一是如何将待处理的数据存储到计算机内存中,即数据表示;二是设计算法操作这些数据,即数据处理。数据表示的本质是数据结构设计,数据处理的本质是算法...
  • 数据结构基础概念篇

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

    万次阅读 多人点赞 2020-05-24 22:23:36
    数据结构想必大家都不会陌生,对于一个...数据结构种类繁多,本文将通过图解的方式对常用数据结构进行理论上的介绍和讲解,以方便大家掌握常用数据结构的基本知识。 本文提纲: 1数组 数组可以说是最基本最...
  • 常见数据结构

    万次阅读 2018-02-05 15:01:50
    一 Array(数组) ...链表:线性表的一种,最基本,最简单,也是最常用数据结构 特征: 1.元素之间的关系是一对一的关系(除了第一个元素和最后一个元素,其他元素都是首尾相接) 2.顺序存储结构和链式存储结构两...
  • 数据结构与算法学习笔记

    万次阅读 多人点赞 2018-09-25 13:55:49
    本文是王争老师的《算法与数据结构之美》的学习笔记,详细内容请看王争的专栏。...最常用数据结构预算法: 数据结构:数组、链表、栈、队列、散列表、二叉树‘、堆、跳表、图、Tire树 算法: 递归...
  • ① 集合 集合中任何两个数据元素之间都没有逻辑关系,组织形式松散. ② 线性结构 线性结构中的 结点按逻辑关系依次排列形成一个“锁链”. ③ 树形结构 树形结构具有...线性结构结构中的数据元素之间存在一对一的...
  • 数据结构

    万次阅读 2018-02-07 00:47:38
    1. 什么是数据结构算法+数据结构=程序设计 数据结构是由数据和结构两方面组成,下面举一个例子可以让大家很快地理解数据结构:比如我们实验楼的课程管理系统,每一门课程由课程号、课程名、类别、作者等组成,每门...
  • 常用数据结构介绍

    万次阅读 2017-08-08 16:03:02
    常用数据结构介绍 0.数组:顺序存储,随机访问  链表:链表存储,顺序访问 1.栈 2.队列 3.串 4.树 1)二叉树 2)遍历二叉树: 前序(先中间,再左边,后右边) 中序(先左边,再中间,后右边) 后序(先左边...
  • 常见数据结构优缺点比较

    千次阅读 2017-12-11 11:17:08
    数据结构是对在计算机内存中的数据的一种安排,数据结构包括数组,链表,栈,二叉树,哈希表等等,数据结构和技术与如何处理现实世界...今天不展开常见数据结构的原理,仅仅比较他们的优缺点。 数据结构 优点 缺点
  • 简单来说 数据结构有哪些? 存储方式上:链表形式,数组, 数据结构分别为逻辑结构、存储结构(物理结构) 逻辑结构又分为四类基本结构: 集合、线性结构、树形结构、图状结构(网状结构) 集合、线性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,505,966
精华内容 602,386
关键字:

常用的数据结构有哪些

数据结构 订阅