数据结构三要素——逻辑结构和物理结构与数据运算之间的关系

数据结构的三要素是:逻辑结构,物理结构,数据的运算。

逻辑结构:

分为线性结构个非线性结构。

线性结构就是有一一对应的关系的,如A-B-C,这三个字母就符合线性结构。

非线性结构就是集合,树,图。集合就是一些元素共同归位一类,如自然数集合;树就是有层次关系结构,如家族谱系树;图就是每个元素之间会有联系,如一座城市的地铁图。

非常重要的一个细节就是:运算会和逻辑结构有关,和物理结构无关。

物理结构:

也就是元素如何存储的,即存储结构。

又分为顺序结构,链式结构,索引结构,散列结构。

这四种结构各有优缺点:顺序虽然可以实现直接存取,但是对于空间的利用不充分;链式虽然很好利用了空间,但是得到元素只能顺序存取,这样很不方便,并且还要有额外的空间给指针;索引虽然是结合了上面两种的优缺点,但额外的索引表增加了内存损耗;散列结构不可避免会有冲突的危险。

数据运算:

运算包括定义实现。运算的定义是针对逻辑结构的,运算的实现是针对存储结构的。

举个例子:如果逻辑结构是线性的(A-B-C),物理结构是链式的(addr0[A]->addr2[B]->addr1[C]),运算的定义是找到B的前一个元素。B的前一个元素是A,但是如果实现起来,必须先找到addr0,再找addr2,确认了addr2中是B,就得到了A这个结果。但是如果这里的物理结构是顺序的,直接可以从addr0得到(B的前一个地址是addr0)。很明显两种不同的链式结构,同一种运算实现的方法是不同的。

    原文作者:lusifor
    原文地址: https://blog.csdn.net/weixin_41147630/article/details/105985356
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞