数据结构与算法-深入浅出数据结构

2020-10-07  本文已影响0人  Shawn_Shawn

前言

在数据结构与算法开篇的部分,我们了解到数据结构的一些基本概念。

数据结构的术语

在计算机中,数据元素并不是孤立、杂乱无序的,而是具有内在联系的数据集合。数据元素之间存在的一种或多种特定关系,也就是数据的组织形式。

逻辑结构和物理结构

实际上数据结构是区分逻辑结构和物理结构的。物理结构实际上就是数据结构实际的存储结构,但是逻辑上不一定就是跟存储结构一样的。物理结构一般都是数组和链表,数组和链表作为最基本的数据结构,例如队列,如果是基于数组实现的队列,就被称之为顺序队列,如果是基于链表实现的队列则被称之为链式队列。下面具体来论述下逻辑结构和物理结构。

逻辑结构

逻辑结构指的是数据对象中数据元素之间的相互关系。
逻辑结构分为四种:

  1. 集合结构:集合结构中的数据元素除了同属于一个集合外没有其他关系。各个数据元素是“平等”的,共同属性是“同属于一个集合”。集合关系就类似于数学中的集合。数组,链表,散列表。
  2. 线性结构:线性结构中的数据元素之间是一对一的关系。队列,栈。
  3. 树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。树。
  4. 图形结构:图形结构的数据元素是多对多的关系。图。

逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。

物理结构

数据是数据元素的集合,根据物理结构的定义,实际上就是如何把数据元素存储到计算机的存储器中。
数据的存储结构应正确反映数据元素之间的逻辑关系。
数据元素的存储结构形式有两种:

逻辑结构是面向问题的,而物理结构是面向计算机的,其基本的目标就是将数据及其逻辑关系存储到计算机的内存中。

抽象数据类型

对比java中定义的抽象数据类型:

抽象 实现
List ArrayList,LinkedList
Queue ArrayDeque,LinkedList
Map HashMap,TreeMap

线性表和非线性表

线性表

非线性表

只要不满足线性表的特性,都是非线性表,例如树,图,散列表。

上一篇 下一篇

猜你喜欢

热点阅读