几种常见的数据结构,你知道哪些?

2023-05-26 0 464

计算机系统程序在前述应用领域中十分常用,那时各式各样演算法基本上都牵涉计算机系统程序,因而,掌控计算机系统程序称得上应用领域软件技师的必不可少专业技能。

一、甚么是计算机系统程序

计算机系统程序,隐晦地认知,是科学研究统计数据的储存形式。

他们晓得,统计数据储存多于两个目的,即为的是方便快捷中后期对统计数据的再借助,就有如他们采用字符串储存 {1,2,3,4,5} 是为的是中后期获得它的加和值,因伤由的统计数据储存犯罪行为是对储存空间的可耻。

因而,统计数据在计算机系统储存空间的放置,绝不是佯装的,这就明确要求他们优先选择一类好的形式来储存统计数据,而这也是计算机系统程序的核心思想。

统计数据储存

始终年来我们直面的统计数据储存,都是类似于储存 1、 2、{a,b,c}、 “https://jq.qq.com/?_wv=1027&k=pgc7ZlEB” 这种的难题,化解形式毫无疑问是用表达式或是字符串对统计数据展开储存,即:

int a=1; int b=2; char str[3]={a,b,c}; char *data=”http://www.strongerhuang.com”;

但,假如要储存这种几组统计数据:{大列佩季哈区,刘平,王华,何应钦,陈勇,宋清龄},统计数据间具备这种的亲密关系:大列佩季哈区是刘平、王华和何应钦的母亲,与此同时刘平却是陈勇和宋清龄的母亲,统计数据间的亲密关系如图 1 所示:

几种常见的数据结构,你知道哪些?

对储存间具备繁杂亲密关系的统计数据,假如却是用表达式或字符串来储存(比如说用字符串储存 {“大列佩季哈区”,”刘平”,“王华”,”何应钦”,”陈勇”,”宋清龄”} ),统计数据储存是没难题,但难以充分体现统计数据间的逻辑亲密关系,中后期难于采用,或许合情合理。

特别针对这类统计数据,计算机系统程序中提供更多有专门针对的genomes来储存这类统计数据。

再比如说,导航系统毫无疑问是自驾游旅途的必不可少神器,在他们程序员眼中,无论是哪款导航系统应用领域软件,其导航系统功能的实现都需要大量地图统计数据的支持。很明显,这些统计数据绝不是采用表达式或字符串展开储存的,那样对统计数据的采用简直是个悲剧。

特别针对这类统计数据,计算机系统程序提供更多了图储存结构,专门针对用于储存这类统计数据。

二、计算机系统程序储存分类

大致包含以下三种储存结构:

线性表,还可细分为顺序表、链表、栈和队列;genomes,包括普通树,二叉树,线索二叉树等;图储存结构;

三、线性表

线性表结构储存的统计数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有两个小朋友和他拉手,具备这种“一对一”亲密关系的统计数据就可以采用线性表来储存。

几种常见的数据结构,你知道哪些?

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

线性表并不是一类具体的储存结构,它包含顺序储存结构和链式储存结构,是顺序表和链表的统称。

1.顺序表

顺序表,简单地认知,是常用的字符串,只是换了个名字而已,例如采用顺序表储存 {1,3,5,7,9},总的来看:

几种常见的数据结构,你知道哪些?

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

2.链表

他们晓得,采用顺序表(底层实现靠字符串)时,需要提前申请一定大小的储存空间,这块储存空间的物理地址是连续的,如图 1 所示。

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

为的是给各个统计数据块建立“依次排列”的亲密关系,链表给各统计数据块增设两个指针,每个统计数据块的指针都指向下两个统计数据块(最后两个统计数据块的指针指向 NULL),就有如两个个小学生都伸手去拉住下两个小学生的手,这种,看似毫无亲密关系的统计数据块就建立了“依次排列”的亲密关系,也就形成了链表,总的来看:

几种常见的数据结构,你知道哪些?

3.栈和队列

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

栈中的元素只能从线性表的一端进出(另一端封死),且要遵循“先入后出”的原则,即先进栈的元素后出栈。
几种常见的数据结构,你知道哪些?

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

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

几种常见的数据结构,你知道哪些?

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

四、树储存结构

树储存结构适合储存具备“一对多”亲密关系的统计数据。

几种常见的数据结构,你知道哪些?

如上图所示,其中刘平多于两个母亲,但他却有两(多)个孩子,这是“一对多”的亲密关系,满足这种亲密关系的统计数据可以采用树储存结构。

五、图储存结构

图储存结构适合储存具备“多对多”亲密关系的统计数据。

几种常见的数据结构,你知道哪些?

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

相关文章

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

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