数据结构之逻辑结构与存储结构
来源:互联网 发布:知乎文章最多几张图 编辑:程序博客网 时间:2024/06/05 04:35
转自逻辑结构和存储结构
百度百科:数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。结合今天在复习过程中新的理解,主要总结一下逻辑结构和存储结构。
什么是逻辑结构?
简单说,逻辑结构就是数据之间的关系。而按数据之间的关系来说,逻辑结构大概可以分为两种:线性结构和非线性结构(集合、树、网)。
线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。例如:线性表,典型的线性表有:顺序表、链表、栈(顺序栈、链栈)和队列(顺序队列、链队列)。它们共同的特点就是数据之间的线性关系,除了头结点和尾结点之外,每个结点都有唯一的前驱和唯一的后继,也就是所谓的一对一的关系。
非线性结构:对应于线性结构,非线性结构也就是每个结点可以有不止一个直接前驱和直接后继。常见的非线性结构包括:树(二叉树)、图(网)等。什么是存储结构?
逻辑结构指的是数据间的关系,而存储结构是逻辑结构的存储映像。通俗的讲,可以将存储结构理解为逻辑结构用计算机语言的实现。常见的存储结构有顺序存储、链式存储、索引存储以及散列存储(哈希表)。
顺序存储:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于数组来描述的。优点:节省空间,可以实现随机存取;缺点:插入、删除时需要移动元素,效率低。
链式存储:在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。特点是元素在物理上可以不相邻,所以每个数据元素包括了一个数据域和一个指针域,数据域用来存放数据,而指针域用来指向其后继结点的位置。优点:插入、删除灵活;缺点:不能随机存取,查找速度慢。
逻辑结构和存储结构的区别
这两者并不冲突,一个指的是数据之间的关系,而另一个指这种关系在计算机中的表现形式。比如,线性表中的栈,数据元素之间的关系是一对一的,除头和尾结点之外的每个结点都有唯一的前驱和唯一的后继,这体现的是逻辑结构;而对于栈中的结点来说,它们可以顺序存储(也就是顺序栈),取一段连续的存储空间,将栈结点按顺序存入,每个结点和其前驱和后继在物理上都是相邻的。同时,栈结点也可以链式存储(链栈),每个结点中包括数据域和指针域,而指针域就是用来指向其后继的,在访问时就可以通过指针来找到其后继进行访问,每个结点之间物理上可以相邻也可以不相邻。
另外的总结
不同的线性表之间的区别:
线性表在元素的关系上是一样的,都是“线性“关系,不同的线性表区别主要体现在不同的特性上。比如:队列的先进先出、栈的后进先出等。
以存储结构相同、逻辑结构又同为线性表的链栈和链队列为例,它们都是链式存储的,每个结点都是由数据域和指针域组成,每个结点也都有唯一的前驱和唯一的后继(除头尾结点外)。那么它们看起来就很相似,区别呢?区别就在于给他们定义的特殊操作,它们都有”出“和”入“两种操作,一个是“先进先出”,而一个是“后进先出”。
- 数据结构之逻辑结构与存储结构
- 数据结构之逻辑结构与物理结构(存储结构)
- 数据结构逻辑结构与存储结构
- 数据结构之逻辑结构与物理结构
- 数据结构 - 逻辑结构和存储结构
- 数据结构:逻辑结构和存储结构
- 数据结构学习之逻辑结构与物理结构
- 数据结构之存储结构
- 数据结构之存储结构
- 数据结构绪论-逻辑结构与物理结构
- 数据的存储结构与逻辑结构
- Java数据结构与算法之数据结构-存储结构(10)------Java四大存储结构
- Oracle逻辑存储结构与物理存储结构
- Java数据结构与算法之数据结构-逻辑结构-线性结构(9)------Java线性结构概念及其基本操作
- ORACLE 数据存储结构之逻辑存储结构
- 数据结构1----逻辑结构与物理结构(霜之小刀)
- 逻辑结构和存储结构
- 数据结构 -逻辑结构
- jQuery学习之五---效果
- SEED-DIM3517实验五记录 2
- dnsmasq
- 代理模式CGLIB
- 处理JavaScript异常的正确姿势
- 数据结构之逻辑结构与存储结构
- Ubuntu sublime3相关问题
- c语言
- C#版本兼容问题
- 容器部署解决方案Docker
- QT小例子GUI(主)线程与子线程之间的通信
- 冒泡排序及递归
- 汇编第十三节-int指令
- C语言内存管理和动态内存开辟