每个程序员都必须掌握的 8 种数据结构!

2023-05-26 0 590

每个程序员都必须掌握的 8 种数据结构!

计算机流程是一类特定的组织机构和储存统计数据的形式,能使他们能更高效率地对储存的统计数据继续执行操作形式。计算机流程在软件工程和软件工程应用领域具备广为而多样化的商业用途。

每个程序员都必须掌握的 8 种数据结构!

基本上大部份已合作开发的流程或软件产品都采用计算机流程。除此之外,统计数据结构归属于软件工程和软件工程的此基础。当牵涉软件工程复试难题时,这是两个关键性主轴。因而,做为合作开发者,他们要对计算机流程有充份的介绍。

在责任编辑中,我将概要说明每一合作开发者要晓得的8种常见计算机流程。

1.数组

数组是一般来说大小不一的内部结构,能可容完全相同正则表达式的工程项目。它能是有理数数组,浮点数组,数组数组或即使是数组数组(比如三维数组)。数组已创建检索,这意味著能展开乱数出访。

每个程序员都必须掌握的 8 种数据结构!

Fig 1. Visualization of basic Terminology of Arrays

数组演算

结点:结点大部份原素并展开列印。填入:将两个或数个原素填入数组。删掉:从数组中删掉原素搜寻:在数组中搜寻原素。您能按原素的值或检索搜寻原素预览:在取值检索处预览原有原素的值

数组的应用应用领域

用作构筑其它计算机流程的此基础,比如数组条目,堆,基元表,矢量和行列式。用作相同的次序演算法,比如填入次序,加速次序,冒泡次序和分拆次序。

2.二叉树

二叉树是一类顺序内部结构,由相互链接的线性顺序工程项目序列组成。因而,您要顺序出访统计数据,并且无法展开乱数出访。链接条目提供了动态集的简单灵活的表示形式。

让他们考虑一下有关二叉树的术语。您能通过参考图2来获得两个清晰的主意。

二叉树中的原素称为节点。每一节点都包含两个密钥和两个指向其后继节点(称为next)的指针。名为head的属性指向链接条目的第两个原素。二叉树的最后两个原素称为尾。
每个程序员都必须掌握的 8 种数据结构!

Fig 2. Visualization of basic Terminology of Linked Lists

以下是可用的各种类型的二叉树。

单链条目—只能沿正向结点工程项目。双二叉树-能在前进和后退方向上结点工程项目。节点由两个称为上两个的附加指针组成,指向上两个节点。循环链接条目—链接条目,其中头的上两个指针指向尾部,尾号的下两个指针指向头。

二叉树操作形式

搜寻:通过简单的线性搜寻在取值的二叉树中找到键为k的第两个原素,并返回指向该原素的指针插入:在链接条目中填入两个密钥。填入能通过3种相同的形式完成;在条目的开头填入,在条目的末尾填入,然后在条目的中间填入。删掉:从取值的二叉树中删掉原素x。您不能单步删掉节点。删掉能通过3种相同形式完成;从条目的开头删掉,从条目的末尾删掉,然后从条目的中间删掉。

二叉树的应用应用领域

用作编译器设计中的符号表管理。用作在采用Alt Tab(采用循环二叉树实现)的流程之间展开切换。

3.堆栈

堆栈是一类LIFO(后进先出-最后放置的原素能首先出访)内部结构,该内部结构通常在许多编程语言中都能找到。该内部结构被称为”堆栈”,因为它类似于真实世界的堆栈-板的堆栈。

每个程序员都必须掌握的 8 种数据结构!

堆栈操作形式

下面给出了能在堆栈上继续执行的2个基本操作形式。请参考图3,以更好地介绍堆栈操作形式。

Push 推送:在堆栈顶部填入两个原素。Pop 弹出:删掉最上面的原素并返回。
每个程序员都必须掌握的 8 种数据结构!

Fig 3. Visualization of basic Operations of Stacks

除此之外,为堆栈提供了以下附加功能,以检查其状态。

Peep 窥视:返回堆栈的顶部原素而不删掉它。isEmpty:检查堆栈是否为空。isFull:检查堆栈是否已满。

堆栈的应用应用领域

用作表达式评估(比如:用作解析和评估数学表达式的调车场演算法)。用作在递归编程中实现函数调用。

4.队列

队列是一类FIFO(先进先出-首先放置的原素能首先出访)内部结构,该内部结构通常在许多编程语言中都能找到。该内部结构被称为”队列”,因为它类似于现实世界中的队列-人们在队列中等待。

队列操作形式

下面给出了能在队列上继续执行的2个基本操作形式。请参考图4,以更好地介绍堆栈操作形式。推荐阅读:图解 Java 中的计算机流程及原理。

进队:将原素填入队列的末尾。出队:从队列的开头删掉原素。
每个程序员都必须掌握的 8 种数据结构!

Fig 4. Visualization of Basic Operations of Queues

队列的应用应用领域

用作管理多线程中的线程。用作实施排队系统(比如:优先级队列)。

5.哈希表

基元表是一类计算机流程,用作储存具备与每一键相关联的键的值。除此之外,如果他们晓得与值关联的键,则它有效地支持查找。因而,无论统计数据大小不一如何,填入和搜寻都非常有效。

当储存在表中时,直接寻址采用值和键之间的一对一映射。但是,当存在大量键值对时,此方法存在难题。该表将具备很多记录,并且非常庞大,考虑到典型计算机上的可用内存,该表可能不切实际即使无法储存。为避免此难题,他们采用基元表。

基元函数

名为基元函数(h)的特定函数用作克服直接寻址中的上述难题。

在直接出访中,带有密钥k的值储存在插槽k中。采用基元函数,他们能计算出每一值都指向的表(插槽)的检索。采用取值键的基元函数计算的值称为基元值,它表示该值映射到的表的检索。

h:基元函数k:应确定其基元值的键m:基元表的大小不一(可用插槽数)。两个不接近2的精确乘方的素数是m的两个不错的选择。
每个程序员都必须掌握的 8 种数据结构!

Fig 5. Representation of a Hash Function

1→1→15→5→523→23→363→63→3

从上面给出的最后两个示例中,他们能看到,当基元函数为数个键生成完全相同的检索时,就会发生冲突。他们能通过选择合适的基元函数h并采用链接和开放式寻址等技术来解决冲突。推荐看下:为什么要重写 hashcode 和 equals 方法?

基元表的应用应用领域

用作实现统计数据库检索。用作实现关联数组。用作实现”设置”计算机流程。

6.树

树是一类层次内部结构,其中统计数据按层次展开组织机构并链接在一起。此内部结构与链接条目相同,而在链接条目中,工程项目以线性顺序链接。

在过去的几十年中,已经合作开发出各种类型的树木,以适合某些应用应用领域并满足某些限制。一些示例是二叉搜寻树,B树,红黑树,展开树,AVL树和n元树。

二叉搜寻树

顾名思义,二进制搜寻树(BST)是一类二进制树,其中统计数据以分层内部结构展开组织机构。此计算机流程按次序顺序储存值,他们将在本课程中详细研究这些值。

二叉搜寻树中的每一节点都包含以下属性。

key:储存在节点中的值。left:指向左孩子的指针。右:指向正确孩子的指针。p:指向父节点的指针。

二叉搜寻树具备独特的属性,可将其与其它树区分开。此属性称为binary-search-tree属性。

令x为二叉搜寻树中的两个节点。

如果y是x左子树中的两个节点,则y.key≤x.key如果y是x的右子树中的节点,则y.key≥x.key
每个程序员都必须掌握的 8 种数据结构!

Fig 6. Visualization of Basic Terminology of Trees.

树的应用应用领域

二叉树:用作实现表达式解析器和表达式求解器。二进制搜寻树:用作许多不断输入和输出统计数据的搜寻应用应用领域流程中。堆:由JVM(Java虚拟机)用来储存Java对象。Trap:用作无线网络。

7.堆

让他们看看如何表示堆。堆能采用树和数组表示。图7和8显示了他们如何采用二叉树和数组来表示二叉堆。

每个程序员都必须掌握的 8 种数据结构!

Fig 7. Binary Tree Representation of a Heap

每个程序员都必须掌握的 8 种数据结构!

Fig 8. Array Representation of a Heap

堆能有2种类型。

最小堆-父项的密钥小于或等于子项的密钥。这称为min-heap属性。根将包含堆的最小值。最大堆数-父项的密钥大于或等于子项的密钥。这称为max-heap属性。根将包含堆的最大值。

堆的应用应用领域

用作实现优先级队列,因为能根据堆属性对优先级值展开次序。能在O(log n)时间内采用堆来实现队列功能。用作查找取值数组中k个最小(或最大)的值。用作堆次序演算法。

8.图

两个图由一组有限的顶点或节点以及一组连接这些顶点的边组成。

图的顺序是图中的顶点数。图的大小不一是图中的边数。

如果两个节点通过同一边彼此连接,则称它们为相邻节点。

有向图

如果图形G的大部份边缘都具备指示什么是起始顶点和什么是终止顶点的方向,则称该图形为有向图。

他们说(u,v)从顶点u入射或离开顶点u,然后入射到或进入顶点v。

自环:从顶点到自身的边。

无向图

如果图G的大部份边缘均无方向,则称其为无向图。它能在两个顶点之间以两种形式传播。

如果顶点未连接到图中的任何其它节点,则称该顶点为孤立的。

每个程序员都必须掌握的 8 种数据结构!

Fig 9. Visualization of Terminology of Graphs

图的应用应用领域

用作表示社交媒体网络。每一用户都是两个顶点,并且在用户连接时会创建一条边。用作表示搜检索擎的网页和链接。互联网上的网页通过超链接相互链接。每页是两个顶点,两页之间的超链接是一条边。用作Google中的页面排名。用作表示GPS中的位置和路线。位置是顶点,连接位置的路线是边。用作计算两个位置之间的最短路径。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务