数据结构逻辑结构图中的逻辑结构和物理结构的区别是什么

什么叫数据的物理结构和逻辑结构_百度知道
什么叫数据的物理结构和逻辑结构
1、数据的物理结构数据结构在计算机中的表示(又称映像)称为数据的物理结构,或称存储结构。它所研究的是数据结构在计算机中的实现方法,包括数据结构中元素的表示及元素间关系的表示。2、数据的逻辑结构数据元素之间的逻辑关系称为数据的逻辑结构。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型,它与数据的存储无关。从数学的角度观察,逻辑结构可形式化定义为(D,R),D是数据元素的集合,R是D上关系的有限数据元素的集合。数据的存储结构可采用顺序存储或链式存储的方法。顺序存储方法是把逻辑上相邻的元素存储在物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。链式存储方法是对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附设的指针字段来表示,由此得到的存储表示称为链式存储结构。链式存储结构通常借助于程序设计语言中的指针类型来实现。
电气工程师
逻辑结构是指数据的逻辑关系,比如二叉树,我们知道内存是不会分叉的。链式存储,是在计算机中不连续的内存使用间接寻找方式连接的,是物理内存的表现,在计算机上的存储是一段连续的内存块,就是在计算机内存中的存储关系。比如数组物理结构
本回答被网友采纳
一个不太恰当的比喻:逻辑结构就好比你和同学之间的友谊关系,物理结构就好比一群同学在班级里各自不同地理位座位。
为您推荐:
其他类似问题
您可能关注的内容
逻辑结构的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
怎么理解数据结构中的逻辑结构?
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
“&”这个符号确切点讲,应该不是数据结构里面要讲的!这个符号的具体用法应该参阅C语言或者是C++语言中关于函数传递和调用这个模块.
“&”通常有两种使用方法是:一种是标识逻辑运算符号:相当与数学里面的“且”,如:要判断一个变量i必须同时大于0,而且要小于10的表达式为 (i&0 && i&10)还有有一种使用方法是用于函数调用(传递信息)又分为:传地址,和引用传地址:
Function(int *data1, int &data2 )
调用函数 Function(int &data1, int &data2)引用调用(C++语言中才有)
Function(int data1,int data2)
调用函数 Function(int &data1,int &data2) 以上意见仅供参考
为您推荐:
其他类似问题
扫描下载二维码43人已关注
数据结构主要学存储结构和逻辑结构。存储结构是数据在计算机中实际的存在形态,逻辑结构是程序人员需要的数据形态。数据结构是学用有限的存储结构:顺序和随机存储来构造更为复杂的逻辑结构,进而基于这些逻辑结构来完成一些符合现实模型的算法。其实数据结构就是学习如何抽像信息、如何封装数据、如何处理数据元素之间的关系。至于数据结构和算法的关系,下面是我的一些见解。数据结构是数据间的有机关系,算法是对数据的操作步骤。这两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,程序根本无法设计,例如,设计a+b的程序,你总得找到a和b的值吧,a和b必须是可以互相找到的才能进行程序运算,a和b就必然要联结成一定的关系,或是线性关系,或是树型关系,或者是图型关系,你的程序才能产生,杂乱无章的数据-------就是没有数据结构的数据,是没有算法的,你试试做一个电子运动的时间和坐标对应的算法看看行不行,显然不行。因为有了数据结构,算法才能诞生。反过来,算法又是数据结构得以维持的一个条件,没有算法,数据根本无法有规律的打交道,也就是说数据的间只会是杂乱无章地碰撞,这样数据结构就会消灭。算法是绝对运动的,数据结构是相对静止的,二者是不可分割的关系。数据结构和算法不仅仅是计算机中才有的,计算机是后来诞生的东西,计算机的概念来源于自然界,自然界中例如一棵树的根和树叶之间的信息交流就是一个算法,是建立在根数据和树叶数据之间可以相通的关系上的算法,计算机只是自然界的一个模拟,编程语言不是程序的一个要素,因为自然界是没有语言的,但是有程序,这是唯物主义的观点。算法是活泼的,数据结构是迟钝的,算法的发展要求数据结构跟着发展,否则就会阻碍算法的发展,算法的发展或迟或早必然冲破数据结构的束缚,二者必然将建立在一个新的起点继续着矛盾运动,数据结构是相对静止的,算法是绝对运动的,这二者搜索首先表现为不可分割的关系。没有一定组织关系的数据,算法就无法产生,你不可能对一堆杂乱无章的数据编写算法,你要想对数据进行操作,必须能够找到数据,这样就必须将它们按照一定规律组织起来-----这个过程不一定是算法,但是算法可以实现这个过程,数据结构是算法得以诞生的条件-----否则就是数据间的杂乱无章的运动,但是运动并不是算法。反过来算法是数据结构得以维持的条件,没有了算法对数据进行操作,数据就不会有规律地进行交互,数据结构也就随之消灭。客观世界是物质的,物质是运动的,运动是有规律的,有规律的运动就是程序,客观世界是存在程序的,所以不用担心没有算法世界会怎么样,如果没有规律的运动,就不会有人。算法的革命的、活泼的,数据结构是反动的、迟钝的,算法的发展必然推动数据结构的发展,简单的数据结构不可能适应复杂的算法,只有提供多种复合的数据结构才能为复杂的算法提供新的空间,算法的发展必然会冲破数据结构的束缚-----不过不要忘记了这种物的规律是由人来实现的。它们可以相互区别也可以相互统一。广义上讲,算法是某一系列运算步 骤,它表达解决某一类计算问题的一般方法,对这类方法的任何一个输入,它可以按步骤一步一步计算,最终产生一个输出。但是对于所有的计算问题,都离不开要 计算的对象或者要处理的信息,而如何高效的把它们组织起来,就是数据结构关心的问题,所以算法是离不开数据结构的。单讲数据结构,它指数据的组织结构,它 有逻辑结构和物理结构,另外还包括一些定义在某种数据结构上的算法,它只限于某一特定数据结构中使用,可以认为它是数据结构的组成部分,比如栈的压栈操 作,这些算法虽小但很重要,可以看成是它们决定了数据结构的外部特性,比如同样是堆,有二叉堆,二项式堆,它们除了内部结构的不同,最大的还是外部操作的 算法性能不同,也决定了它们本质上的不同,如果外部性能一样,那研究将是毫无意义的。总之,不能脱离算法讨论数据结构,也不能脱离数据结构研究算法。数据结构主要学存储结构和逻辑结构。存储结构是数据在计算机中实际的存在形态,逻辑结构是程序人员需要的数据形态。数据结构是学用有限的存储结构:顺序和随机存储来构造更为复杂的逻辑结构,进而基于这些逻辑结构来完成一些符合现实模型的算法。其实数据结构就是学习如何抽像信息、如何封装数据、如何处理数据元素之间的关系。至于数据结构和算法的关系,下面是我的一些见解。数据结构是数据间的有机关系,算法是对数据的操作步骤。这两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,程序根本无法设计,例如,设计a+b的程序,你总得找到a和b的值吧,a和b必须是可以互相找到的才能进行程序运算,a和b就必然要联结成一定的关系,或是线性关系,或是树型关系,或者是图型关系,你的程序才能产生,杂乱无章的数据-------就是没有数据结构的数据,是没有算法的,你试试做一个电子运动的时间和坐标对应的算法看看行不行,显然不行。因为有了数据结构,算法才能诞生。反过来,算法又是数据结构得以维持的一个条件,没有算法,数据根本无法有规律的打交道,也就是说数据的间只会是杂乱无章地碰撞,这样数据结构就会消灭。算法是绝对运动的,数据结构是相对静止的,二者是不可分割的关系。数据结构和算法不仅仅是计算机中才有的,计算机是后来诞生的东西,计算机的概念来源于自然界,自然界中例如一棵树的根和树叶之间的信息交流就是一个算法,是建立在根数据和树叶数据之间可以相通的关系上的算法,计算机只是自然界的一个模拟,编程语言不是程序的一个要素,因为自然界是没有语言的,但是有程序,这是唯物主义的观点。算法是活泼的,数据结构是迟钝的,算法的发展要求数据结构跟着发展,否则就会阻碍算法的发展,算法的发展或迟或早必然冲破数据结构的束缚,二者必然将建立在一个新的起点继续着矛盾运动,数据结构是相对静止的,算法是绝对运动的,这二者搜索首先表现为不可分割的关系。没有一定组织关系的数据,算法就无法产生,你不可能对一堆杂乱无章的数据编写算法,你要想对数据进行操作,必须能够找到数据,这样就必须将它们按照一定规律组织起来-----这个过程不一定是算法,但是算法可以实现这个过程,数据结构是算法得以诞生的条件-----否则就是数据间的杂乱无章的运动,但是运动并不是算法。反过来算法是数据结构得以维持的条件,没有了算法对数据进行操作,数据就不会有规律地进行交互,数据结构也就随之消灭。客观世界是物质的,物质是运动的,运动是有规律的,有规律的运动就是程序,客观世界是存在程序的,所以不用担心没有算法世界会怎么样,如果没有规律的运动,就不会有人。算法的革命的、活泼的,数据结构是反动的、迟钝的,算法的发展必然推动数据结构的发展,简单的数据结构不可能适应复杂的算法,只有提供多种复合的数据结构才能为复杂的算法提供新的空间,算法的发展必然会冲破数据结构的束缚-----不过不要忘记了这种物的规律是由人来实现的。它们可以相互区别也可以相互统一。广义上讲,算法是某一系列运算步 骤,它表达解决某一类计算问题的一般方法,对这类方法的任何一个输入,它可以按步骤一步一步计算,最终产生一个输出。但是对于所有的计算问题,都离不开要 计算的对象或者要处理的信息,而如何高效的把它们组织起来,就是数据结构关心的问题,所以算法是离不开数据结构的。单讲数据结构,它指数据的组织结构,它 有逻辑结构和物理结构,另外还包括一些定义在某种数据结构上的算法,它只限于某一特定数据结构中使用,可以认为它是数据结构的组成部分,比如栈的压栈操 作,这些算法虽小但很重要,可以看成是它们决定了数据结构的外部特性,比如同样是堆,有二叉堆,二项式堆,它们除了内部结构的不同,最大的还是外部操作的 算法性能不同,也决定了它们本质上的不同,如果外部性能一样,那研究将是毫无意义的。总之,不能脱离算法讨论数据结构,也不能脱离数据结构研究算法。本人乃一个数据痴迷者,在计算机的道路上,也是一个数据结构的痴迷者,现在大学里面和同学搞开发也痴迷于数据库,我就我个人的理解给你谈一谈:首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。上面的概念有一些模糊,我们现在来具体说一说,相信你的数据结构使用的是一门具体的语言比如C/C++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的,比如:你在C/C++中学习到链表,那么链表是什么一个概念,使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。链表在内存中存储的方式是怎样的那?对于你来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于你只需要知道这些就可以了,主要要研究的是“逻辑结构”。我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。估计这个对于算法的初学者可能有点晕,我们在具体的说一些东西吧:在数据结构中最简单的是什么:我个人把书籍中线性表更加细化一层(这里是为了便于理解在这样说的):单个元素,比如:这个i就是一个数据结构,它是一个什么样的数据结构,就是一个类型为int的变量,我们可以对它进行加法/减法/乘法/除法/自加等等一系列操作,当然对于单个元素我们对它的数据结构和算法的研究没有什么意义,因为它本来就是原子的,某些具体运算上可能算法存在比较小的差异;而提升一个层次:就是我们的线性表(一般包含有:顺序表/链表)那么我们研究这样两种数据结构主要就是要研究它的什么东西那?一般我们主要研究他们以结构为单位(就是结点)的增加/删除/修改/检索(查询)四个操作(为什么有这样的操作,我在下面说到),我们一般把“增加/删除/修改”都把它称为更新,对于一个结点,若要进行更新一类的操作比如:删除,对于顺序表来说是使用下标访问方式,那么我们在删除了一个元素后需要将这个元素后的所有元素后的所有元素全部向前移动,这个时间是对于越长的顺序表,时间越长的,而对于链表,没有顺序的概念,其删除元素只需要将前一个结点的指针指向被删除点的下一个结点,将空间使用free()函数进行释放,还原给操作系统。当执行检索操作的时候,由于顺序表直接使用下标进行随机访问,而链表需要从头开始访问一一匹配才可以得到使用的元素,这个时间也是和链表的结点个数成正比的。所以我们每一种数据结构对于不同的算法会产生不同的效果,各自没有绝对的好,也没有绝对的不好,他们都有自己的应用价值和方式;这样我们就可以在实际的项目开发中,对于内部的算法时间和空间以及项目所能提供的硬件能力进行综合评估,以让自己的算法能够更加好。(在这里只提到了基于数据结构的一个方面就是:速度,其实算法的要素还应该包括:稳定性、健壮性、正确性、有穷性、可理解性、有输入和输出等等)希望以上所述,能够对你有所帮助。本人乃一个数据痴迷者,在计算机的道路上,也是一个数据结构的痴迷者,现在大学里面和同学搞开发也痴迷于数据库,我就我个人的理解给你谈一谈:首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。上面的概念有一些模糊,我们现在来具体说一说,相信你的数据结构使用的是一门具体的语言比如C/C++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的,比如:你在C/C++中学习到链表,那么链表是什么一个概念,使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。链表在内存中存储的方式是怎样的那?对于你来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于你只需要知道这些就可以了,主要要研究的是“逻辑结构”。我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。估计这个对于算法的初学者可能有点晕,我们在具体的说一些东西吧:在数据结构中最简单的是什么:我个人把书籍中线性表更加细化一层(这里是为了便于理解在这样说的):单个元素,比如:这个i就是一个数据结构,它是一个什么样的数据结构,就是一个类型为int的变量,我们可以对它进行加法/减法/乘法/除法/自加等等一系列操作,当然对于单个元素我们对它的数据结构和算法的研究没有什么意义,因为它本来就是原子的,某些具体运算上可能算法存在比较小的差异;而提升一个层次:就是我们的线性表(一般包含有:顺序表/链表)那么我们研究这样两种数据结构主要就是要研究它的什么东西那?一般我们主要研究他们以结构为单位(就是结点)的增加/删除/修改/检索(查询)四个操作(为什么有这样的操作,我在下面说到),我们一般把“增加/删除/修改”都把它称为更新,对于一个结点,若要进行更新一类的操作比如:删除,对于顺序表来说是使用下标访问方式,那么我们在删除了一个元素后需要将这个元素后的所有元素后的所有元素全部向前移动,这个时间是对于越长的顺序表,时间越长的,而对于链表,没有顺序的概念,其删除元素只需要将前一个结点的指针指向被删除点的下一个结点,将空间使用free()函数进行释放,还原给操作系统。当执行检索操作的时候,由于顺序表直接使用下标进行随机访问,而链表需要从头开始访问一一匹配才可以得到使用的元素,这个时间也是和链表的结点个数成正比的。所以我们每一种数据结构对于不同的算法会产生不同的效果,各自没有绝对的好,也没有绝对的不好,他们都有自己的应用价值和方式;这样我们就可以在实际的项目开发中,对于内部的算法时间和空间以及项目所能提供的硬件能力进行综合评估,以让自己的算法能够更加好。(在这里只提到了基于数据结构的一个方面就是:速度,其实算法的要素还应该包括:稳定性、健壮性、正确性、有穷性、可理解性、有输入和输出等等)希望以上所述,能够对你有所帮助。
说简单点,数据结构就是数据组织的方式,就是说你在编程中要用到的一些变量也好,常数也好,要以一种什么样的方式来存储才更加适合程序的实现和操作的便利。程序=数据结构+算法奇怪吧,跟你学的语言没什么关系。其实这就是为什么人们都说程序员只要学一种语言就够了。在没有学数据结构和算法的时候你会发现,当你要编代码去做一件事的时候,不管用什么语言,其实都大同小异,变量啊,计算过程啊可能都是一模一样的,变量的存放甚至也没什么规律,存取没什么逻辑。而数据结构就是一种教你怎么存放和读取使用数据的,举个形象点的例子吧,你有一个书架,今年你准备读一读文学类的书(一个编程任务),然后今年年初就买了一堆书(变量),那么就得制定一个阅读的计划了吧,总不能想起读什么就读什么(算法),所以,你根据自己的阅读计划,就得考虑你这些个书怎么放更适合你阅读计划的进行了吧(数据结构)。不知道上面的例子有没有让你理解数据结构是什么样的存在,如果没有的话,其实题主也不必纠结于此,有句古话叫书读百遍其义自见。对待一门新的学科,每个人都是需要时间去入门的,甚至有的人要等这本书读一遍读完了才能真的懂这本书在讲的是什么,所以题主只要认真去学就好了,学着学着说不好就明白了,有时候越是纠结于这个就越搞不明白。说简单点,数据结构就是数据组织的方式,就是说你在编程中要用到的一些变量也好,常数也好,要以一种什么样的方式来存储才更加适合程序的实现和操作的便利。程序=数据结构+算法奇怪吧,跟你学的语言没什么关系。其实这就是为什么人们都说程序员只要学一种语言就够了。在没有学数据结构和算法的时候你会发现,当你要编代码去做一件事的时候,不管用什么语言,其实都大同小异,变量啊,计算过程啊可能都是一模一样的,变量的存放甚至也没什么规律,存取没什么逻辑。而数据结构就是一种教你怎么存放和读取使用数据的,举个形象点的例子吧,你有一个书架,今年你准备读一读文学类的书(一个编程任务),然后今年年初就买了一堆书(变量),那么就得制定一个阅读的计划了吧,总不能想起读什么就读什么(算法),所以,你根据自己的阅读计划,就得考虑你这些个书怎么放更适合你阅读计划的进行了吧(数据结构)。不知道上面的例子有没有让你理解数据结构是什么样的存在,如果没有的话,其实题主也不必纠结于此,有句古话叫书读百遍其义自见。对待一门新的学科,每个人都是需要时间去入门的,甚至有的人要等这本书读一遍读完了才能真的懂这本书在讲的是什么,所以题主只要认真去学就好了,学着学着说不好就明白了,有时候越是纠结于这个就越搞不明白。单讲数据结构,它指数据的组织结构,它 有逻辑结构和物理结构,另外还包括一些定义在某种数据结构上的算法,它只限于某一特定数据结构中使用,可以认为它是数据结构的组成部分,比如栈的压栈操 作,数据结构和算法它们可以相互区别也可以相互统一。广义上讲,算法是某一系列运算步 骤,它表达解决某一类计算问题的一般方法,对这类方法的任何一个输入,它可以按步骤一步一步计算,最终产生一个输出。但是对于所有的计算问题,都离不开要 计算的对象或者要处理的信息,而如何高效的把它们组织起来,就是数据结构关心的问题,所以算法是离不开数据结构的,有些算法虽小但很重要,可以看成是它们决定了数据结构的外部特性,比如同样是堆,有二叉堆,二项式堆,它们除了内部结构的不同,最大的还是外部操作的 算法性能不同,也决定了它们本质上的不同,如果外部性能一样,那研究将是毫无意义的。总之,不能脱离算法讨论数据结构,也不能脱离数据结构研究算法。单讲数据结构,它指数据的组织结构,它 有逻辑结构和物理结构,另外还包括一些定义在某种数据结构上的算法,它只限于某一特定数据结构中使用,可以认为它是数据结构的组成部分,比如栈的压栈操 作,数据结构和算法它们可以相互区别也可以相互统一。广义上讲,算法是某一系列运算步 骤,它表达解决某一类计算问题的一般方法,对这类方法的任何一个输入,它可以按步骤一步一步计算,最终产生一个输出。但是对于所有的计算问题,都离不开要 计算的对象或者要处理的信息,而如何高效的把它们组织起来,就是数据结构关心的问题,所以算法是离不开数据结构的,有些算法虽小但很重要,可以看成是它们决定了数据结构的外部特性,比如同样是堆,有二叉堆,二项式堆,它们除了内部结构的不同,最大的还是外部操作的 算法性能不同,也决定了它们本质上的不同,如果外部性能一样,那研究将是毫无意义的。总之,不能脱离算法讨论数据结构,也不能脱离数据结构研究算法。
后可以回答该问题
相关标签:
相关标签:
关注我们咨询服务合作法律法规京ICP备号
下载申请方APP
即刻拥有你的学业规划助手}

我要回帖

更多关于 数据结构堆和栈的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信