物理结构 数据结构

2024-09-03 19:58
文章标签 数据结构 结构 物理

本文主要是介绍物理结构 数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据结构有逻辑上的数据结构和物理上的数据结构之分。
逻辑上的数据结构反映成分数据(数据元素) 之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。这两种结果相互映射, 逻辑结构用于数据结构的理论分析,物理结构是该结构的具体实现。两种结构的映射就是已逻辑结构为基础将数据在物理结构上实现。
1 数据逻辑结构与物理结构
数据的逻辑结构反映了数据的组成元素之间的关系, 数据的物理结构反映了数据的逻辑结构在物理上的实现。数据的逻
辑结构分两大类: 线性结构和非线性结构, 非线性的机构又可分为集合、树和图。线性结构是n 个数据元素的有序( 次序)
集合。它有四个基本特征:
(l )集合中必存在唯一的一个“ 第一个元素”;

(2) 集合中必存在唯一的一个“ 最后的元素” ;

(3) 除最后元素之外, 其它数据元素均有唯一的“ 后继” ;

(4) 除第一元素之外, 其它数据元素有唯一的“ 前驱” 。
数据结构中线性结构指的是数据元素之间存在着“ 一对一” 的线性关系的数据结构, 而非线性结构的数据元素之间存在着“ 一对多或多对多” 的关系。数据的存储结构有四种: 顺序存储、链接存储、索引存储和散列存储。存储结构是算法实现的基础, 每种数据结构都可能用不同的存储结构来存储, 而不同逻辑结构的数据也可采用相同的存储形式, 而体现的关系不同。比如单链表是一种常见的逻辑结构, 在物理上我们既可以用顺序结构来是实现也可以用链式结构来实现。
2 数据逻辑结构与物理结构映射在教学中的地位

一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构; 数据必须在计算机内存储, 数据的存储结构是数据结构的实现形式, 是其在计算机内的表示; 此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构, 且各种存储结构影响数据处理的效率。在数据结构的教学过程中, 首先要让同学们理解数据的逻辑结构, 理清数据元素之间的关系, 接着将这种逻辑结构在计算机上存储起来, 紧接着在已存储的物理结构上完成特定操作, 最后比较相同逻辑结构采取不同的物理结构完成相同操作在效率上的差异。通过以上一套完整的学习使学生对数据结构有一个全面完整的理解。在这个学习的过程中, 对逻辑结构向物理结构对应关系的理解是学好数据结构这门课程的关键, 如果不能很好的理解这样一个结构, 算法的实现将无从谈起。
3 数据逻辑结构与物理结构映射在教学中的问题
在教学中没有很好地帮助学生跨过数据逻辑结构与物理结构映射这道坎。通过总结近年数据结构的教学经历, 我发现
在该知识点的教学上存在以下问题:
(l )本知识点过于抽象, 内容在空间上的跨度过大, 逻辑结构反映的是数据元素之间的关系, 但数据元素是不可见的, 而
与其对应的物理结构是指的逻辑结构在物理存储空间上真是布置, 这个也是不可见的, 从逻辑上的虚拟组成到物理上的实
际存储对应起来跨度较大。
(2) 在教学中过早引入算法分析, 学生在没有真正将两种结构之间的映射关系搞清的前提下就急于涉及算法实现。这样至少有两个缺点, 一是基本理论没有完全搞清就进行应用, 学生不能很好理解, 二是数据结构开设的课程之前学生刚学过计算机语言, 对于低年级的学生来说计算机语言本身就不是很好理解, 这样两难相合进一步增加了学生对本知识点的理解。
( 3)学生的知识储备不够, 在教学实践中, 每个学院在课程开设的安排不尽相同, 有些班级在数据结构开设之前先修课程
开设不够, 学生对很多知识点要么理解的不透彻要么就是根本就没有学过。

4 数据逻辑结构与物理结构映射在教学中的建议
(l) 在这个知识点的教学上, 我们要尽可能的多的引入现实中的实例, 使虚拟的结构变得可见生动起来。例如, 我们可以将逻辑结构和物理结构比喻成建筑的图纸和实践的建筑, 以此使学生理解两种结构之间的对应关系。我们还可以举班级的学号序列与同学们在教室中实际就坐的空间关系来说明相同的逻辑
结构在不同物理结构下的空间形态分布。除此以外我们也可以借用多媒体教学的手段使同学们能更形象地理解该知识点。
(2) 应尽可能地使学生先对数据逻辑结构与物理结构映射有了完全的理解后再开始算法知识的讲解, 因为数据结构课程每章的教学内容在结构上大致都是一致的, 只要在前期教学中攻克了映射这个难点, 后面章节的教学就变得简单起来, 这样能起到事半功倍的效果。
(3) 做足数据结构课程的知识储备, 在课程设置上在数据结构开设以前应开设数据结构算法描述相对应的程序语言, 除此以外, 应开设于计算机硬件相关的课程, 因为物理结构是基于计算机硬件的。

这篇关于物理结构 数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133896

相关文章

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(