【数据结构】逻辑结构与物理结构

简介: 【数据结构】逻辑结构与物理结构

根据视点的不同,我们把数据结构分为逻辑结构物理结构.

🌳逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系.

逻辑结构分为以下四种:

1.集合结构

集合结构:集合结构中的数据元素除了同属于一个集合,它们之间没有其他关系.

也即,各个数据元素是"平等"的,它们的共同属性是"同属于一个集合".

集合结构图示

集合结构画风如下:


2.线性结构

线性结构:线性结构中的数据元素之间存在一个对一个的关系.

线性结构图示

线性结构画风如下:


3.树形结构

树形结构:树形结构中的数据元素之间存在一种一对多的层次关系.

树形结构图示

树形结构画风如下:


4.图形结构或网状结构

图形结构:图形结构的数据元素是多对多的关系.

图形结构示意图

图形结构画风如下:


我们在用示意图表示数据结构时,要注意两点:

  • 将每一个数据元素看作一个结点,用圆圈表示.
  • 元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示.

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


🌳物理结构

物理结构:又称存储结构,是指数据的逻辑结构在计算机中的存储形式,它包含数据元素的表示和关系的表示.

数据是数据元素的集合,根据物理结构的定义,实际上就是如何把数据元素存储到计算机的存储器中.存储器主要是针对内存而言的,像硬盘,软盘,光盘等外部存储器的数据组织通常用文件结构来描述.

计算机存储器的分类

数据的存储结构正确反映数据元素之间的逻辑关系,这是最为关键的.

如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点.

数据元素的存储结构形式两种:顺序存储链式存储.

1.顺序存储结构

顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的.

如:

可以看到,字符型变量a,b,c,d,e,f在内存中就是按顺序存储的.

顺序存储的特点就是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系.

再比如,我们假设可以使用2个字节的空间表示一个实数,则可以用地址相邻的4个字节的空间表示一个复数.

如下图为表示复数 z1=3.0-2.3i z2=-0.7+4.8i 的顺序存储结构:

复数顺序存储结构示意图

顺序结构其实非常简单,就是大家都按顺序排好,每个人站一小段空间.

我们之前学习C语言时,数组就是这样的顺序存储结构.


2.链式存储结构

虽然顺序存储结构非常简单有规律,但我们在前期学习C语言的时候一定遇到过这样的问题:

就是以删除数组元素为基础的题目,这时候因为数组是顺序结构,我们没法直接将找到的某个元素删除掉.

因为顺序结构的内存空间是固定的,我们只能采用将指定元素后面的所有元素向前移动一个位置的方法来实现"删除"某个元素的效果.

图示如下:

数组元素或者要删除的元素在数组中的位置较为靠后时,似乎只需要移动几个元素就可以达到我们想要的效果,

但是当数组元素非常删除元素在数组中的位置较为靠前的时候,这样的删除元素的效率非常低了.

因此,面对这样时常要变化的结构,顺序存储是不科学的.于是我们就引入了链式存储结构:

链式存储结构:是把元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的.

链式存储结构示意图

如图,因为数据元素的存储关系不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置.

链式存储结构的特点借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑关系.

显然,链式存储就灵活的多,数据存在哪里不重要,只要有一个指针存放了相应的地址就能找到它了.

我们再拿上面顺序结构中提到过的复数来举例:

如下图为表示复数 z1=3.0-2.3i 的链式存储结构,其中实部和虚部之间的关系用值为"0x12ff0415"的指针来表示(0x12ff0415是虚部的存储地址):


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


结语

本节我们一起学习了数据结构中的逻辑结构与物理结构,在数据结构绪论章中,我们还将一起探讨其他三节的内容,分别是:什么是数据结构,数据结构的基本概念和术语以及抽象数据类型,有兴趣的朋友可以直接点击下方链接跳转至相应博客:

相关文章推荐

【数据结构】什么是数据结构?

【数据结构】基本概念和术语

【数据结构】逻辑结构与物理结构

【数据结构】抽象数据类型

......



数据结构绪论篇思维导图:


相关文章
|
2月前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
112 16
|
7月前
|
存储 算法
【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)
【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)
52 0
|
7月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
64 0
|
7月前
|
存储 算法
【数据结构和算法】--队列的特殊结构-循环队列
【数据结构和算法】--队列的特殊结构-循环队列
44 0
|
3月前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
3月前
探索顺序结构:栈的实现方式
探索顺序结构:栈的实现方式
|
3月前
|
存储 算法
【数据结构】二叉树——顺序结构——堆及其实现
【数据结构】二叉树——顺序结构——堆及其实现
|
4月前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
4月前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
6月前
|
存储
【数据结构】树和二叉树的概念及结构
数据结构——树和二叉树的概念及结构
97 3
【数据结构】树和二叉树的概念及结构