📜  数据结构简介| 10种最常用的数据结构

📅  最后修改于: 2021-06-28 18:16:33             🧑  作者: Mango

数据结构是在计算机中组织数据的一种特殊方式,因此可以有效地使用它。这个想法是为了减少不同任务的时间和空间复杂度。

以下是一些流行的数据结构的概述:

  1. 数组:数组是存储在连续内存位置的项目的集合。这个想法是将相同类型的多个项目存储在一起。通过简单地将偏移量添加到基本值(即数组的第一个元素的存储位置(通常由数组的名称表示)),这使得计算每个元素的位置更加容易。

  2. 链表:链表与数组一样,是线性数据结构。与数组不同,链接列表元素不存储在连续的位置;元素使用指针链接。

    链表

  3. 堆栈:堆栈是一种线性数据结构,遵循特定的执行顺序。顺序可以是LIFO(后进先出)或FILO(后进先出)。

    主要在堆栈中执行以下三个基本操作:

    • 推送:在堆栈中添加一个项目。如果堆栈已满,则称其为溢出条件。
    • 弹出:从堆栈中删除一个项目。这些项目以推入的相反顺序弹出。如果堆栈为空,则称其为下溢条件。
    • 窥视或顶部:返回堆栈的顶部元素。
    • isEmpty:如果堆栈为空,则返回true,否则返回false。
  4. 队列:与堆栈一样,队列是一种线性结构,遵循特定的执行顺序。顺序为先进先出(FIFO)。队列的一个很好的例子是资源的任何使用者队列,其中首先服务于第一个使用者的资源。堆栈和队列之间的区别在于删除。在堆栈中,我们删除最近添加的项目;在队列中,我们删除了最近最少添加的项目。

    主要在队列上执行以下四个基本操作:

    • 排队将项目添加到队列。如果队列已满,则称它为溢出条件。
    • 出队:从队列中删除项目。这些项目将以其推入的相同顺序弹出。如果队列为空,则称其为下溢条件。
    • 前部:从队列中获取前部项目。
    • 后方:从队列中获取最后一个项目。
  5. 二进制树:与线性数组,数组,链接列表,堆栈和队列不同,树是分层数据结构。二叉树是一种树数据结构,其中每个节点最多具有两个子节点,称为左子节点和右子节点。它主要使用链接来实现。

    二叉树由指向树中最高节点的指针表示。如果树为空,则root的值为NULL。二叉树节点包含以下部分。

    1. Data
    2. Pointer to left child
    3. Pointer to the right child
  6. 二进制搜索树:在二进制搜索树中是具有以下附加属性的二进制树:
    • 节点的左子树仅包含键值小于节点键值的节点。
    • 节点的右子树仅包含键大于该节点的键的节点。
    • 左和右子树也都必须是二叉搜索树。
  7. 堆:堆是一种特殊的基于树的数据结构,其中树是完整的二叉树。通常,堆可以有两种类型:
    • 最大堆:在最大堆中,根节点上存在的密钥必须在其所有子节点上存在的密钥中最大。对于该二叉树中的所有子树,相同的属性必须递归地为true。
    • 最小堆:在最小堆中,根节点上存在的密钥必须在其所有子节点上存在的密钥中最小。对于该二叉树中的所有子树,相同的属性必须递归地为true。

  8. 散列数据结构:散列是一种重要的数据结构,其设计目的是使用称为散列函数的特殊函数,该函数用于使用特定键映射给定值,以更快地访问元素。映射的效率取决于所使用的哈希函数的效率。

    让哈希函数H(x)将值x映射到数组中的索引x%10处。例如,如果值列表为[11、12、13、14、15],它将分别存储在数组或哈希表中的位置{1、2、3、4、5}。

  9. 矩阵:矩阵表示按行和列顺序排列的数字的集合。必须将矩阵的元素括在括号或方括号中。

    包含9个元素的矩阵如下所示。

  10. Trie: Trie是一种高效的信息Trie val数据结构。使用Trie,可以将搜索复杂度提高到最佳极限(密钥长度)。如果我们将密钥存储在二进制搜索树中,那么平衡良好的BST将需要与M * log N成比例的时间,其中M是最大字符串长度,N是树中密钥的数量。使用Trie,我们可以搜索O(M)时间的密钥。但是,罚款取决于Trie的存储要求。

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。