数据结构-概述(1)

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。

通常有下列四类基本的结构:

⑴集合结构。该结构的数据元素间的关系是“属于同一个集合”。

⑵线性结构。该结构的数据元素之间存在着一对一的关系。

⑶树型结构。该结构的数据元素之间存在着一对多的关系。

⑷图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。

从上面所介绍的数据结构的概念中可以知道,一个数据结构有两个要素。一个是数据元素的集合,另一个是关系的集合。

对于线性结构,树型结构和图形结构的关系,如图:

数据的存储结构(物理结构):

数据的存储结构是指数据的逻辑结构在计算机中的表示。有四种基本的存储映像方法:顺序、链接、索引、散列。

1.顺序存储

主要用于线性的数据结构,它把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系体现。

如图:

2.链式存储

就是给结点附加上指针字段。即,将结点所占的存储单元分为两部分:

(1)数据项  存放结点本身的信息。

(2)指针项  存放此结点的后继结点所对应的存储单元的地址。

指针项可以包括一个或多个指针,以指向结点的一个或多个后继,或记录其他信息。

如图:

顺序与链式对比:

1、比顺序存储结构的存储密度小(每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。

2、逻辑上相邻的节点物理上不必相邻。

3、插入、删除灵活(不必移动节点,只要改变节点中的指针)。

4、查找结点时链式存储要比顺序存储慢。

5、每个结点是由数据域和指针域组成。

3.索引存储

在线性结构中,结点可以排成一个序列:p1,p2,…,pn,每个结点pi在序列里都有对应的位置I,这个位置数就可以作为结点的索引。

索引的存储结构:是用结点的索引号i来确定结点的存储地址。有2种实现方法:

(1)建立附加的索引表,索引表里第i项的值就是第i个结点的存储地址。

(2)当每个结点所占单元个数都相等时,可用位置数的线性函数的值来指出结点对应的存储地址,即第i个结点pi的地址是LOC(pi)=(i-1)*p+q。其中,p为结点所占的单元个数,q为开始结点p1对应的存储地址。

4.散列存储

散列存储,又称hash存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术。散列法存储的基本思想是:由节点的关键码值决定节点的存储地址。散列技术除了可以用于查找外,还可以用于存储。

总结:

对于数据结构的逻辑结构和物理结构的简单解释:

逻辑结构:数据元素之间的逻辑关系,即人对数据的理解,而进行抽象的模型。

物理结构:数据元素在计算机中的存储方法,即计算机对数据的理解,逻辑结构在计算机语言中的映射。

以上所述只是为了让大家对数据结构这个概念有一个全局的认识,便于我们对知识的理解,这样我们就不需要记忆知识,而是利用简单的结点去扩展整个知识网络!

数据结构-概述(1),布布扣,bubuko.com

时间: 2024-10-10 01:06:12

数据结构-概述(1)的相关文章

[考研系列之数据结构]数据结构概述

1.脑图 2.数据结构 2.1 抽象数据类型 表示法: (D,S,P) D:数据对象 S:D上的关系集 P:对D的基本操作集 ADT格式 ADT 抽象数据类型名{ 数据对象:<数据对象定义> 数据关系:<数据对象的定义> 基本操作:<基本操作的定义> }ADT 抽象数据类型名 基本操作的格式: 基本操作名(参数表) 初始条件:<初始条件描述> 操作结构:<操作结果描述> 2.2 分类 2.2.1 按值的不同特性 原子类型的值是不能分解的,如C中基

数据结构概述&lt;4&gt;队列

队列也是一种比较常用的数据结构,和栈不同的地方在于它是先进先出的,就像我们平时的排队一样. 由于队列和栈非常相似,就不详细讲述概念了,可以参考上一篇博客数据结构概述<3>栈. 和栈一样,在这里直接给出队列的接口(queue.h),以及接口的数组实现(queue1.c)和链表实现(queue2.c).分别如下: //queue.h void queue_init(int); int queue_empty(); void queue_put(int); int queue_get(); //qu

数据结构——概述

本来大一下册的时候学过<数据结构>,只怪自己太无知,除了能够理解基本概念外其他的一无所知,上课也算是在坐飞机吧.无奈,现在大二又来看看,复习复习.不求深入的理解只求把书读薄吧. 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的科学. 基本概念和术语: 数据:是信息的载体,是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合.数据不仅包括整型.实型等数值类型,还包括字符及声音.图像.视频等非数值类型. 数据元素

算法数据结构01 /算法数据结构概述

目录 算法数据结构01 /算法数据结构概述 1. 算法 2. 评判程序优劣的方法 3. 时间复杂度 4. 数据结构 5. python数据结构性能分析 6. 总结 算法数据结构01 /算法数据结构概述 1. 算法 算法概述 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务.一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用. 算法是独立存在的一种解决问题的方法和思想. 对于算法而言,实

数据结构概述&lt;2&gt;链表的基本概念

一 链表的定义 讨论链表之前,先说线性表. 线性表是一种最常用且最简单的数据结构.一个线性表是n个数据元素的有限集合.对于一个非空的线性表,一般存在几个特征:(1)存在唯一的一个被称作"第一个"的数据元素:(2)存在唯一的一个被称为"最后一个"的数据元素:(3)除第一个之外,线性表中的每个数据元素均只有一个前驱:(4)除最后一个之外,集合中每个数据元素均只有一个后继. 最常见的线性表就是数组了.对于数组而言,每个元素的存储空间相邻,其逻辑关系上相邻的两个元素,在物理

数据结构概述&lt;1&gt;

一 数据结构的定义 在严蔚敏老师的<数据结构>一书中,是这么定义数据结构的:数据结构是相互之间存在一种或多种特定关系的数据元素的集合.在很多实际问题中,数据元素并非孤立存在,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构.根据数据元素之间关系的不同特性,通常分为4类,分别为集合.线性结构.树形结构和图状结构. 二 动态集合 在<算法导论>一书里,将所有的数据结构描述为动态集合.即我们使用所有的这些数据结构,都是为了对集合中的元素进行一些简单或者复杂的操作,比如查找

数据结构概述

1.基本概念 1)数据(Data) 数据即信息的载体,是能够输入到计算机中并且能被计算机识别.存储和处理的符号总称 2)数据元素(Data Element) 数据元素是数据的基本单位,又称之为记录.一般,数据元素由若干基本项(或称字段.域.属性)组成. 3)数据类型(Data Type) 数据类型是对数据元素取值范围和运算的限定. 4)数据结构(Data Structure) 数据结构是指数据元素和数据元素之间的相互关系.主要包含下面三方面的内容: 逻辑结构:表示数据元素之间的抽象关系(如邻接关

数据结构概述&lt;3&gt;栈

栈是一种重要的数据结构,其实质也是线性表的一种.但是它只支持两种操作:插入和删除.并且,栈的特点是后进先出,也就是说,栈的操作永远在顶部,插入和删除操作只在栈的顶部进行,所以先插入的栈会堆在底下,而后插入的栈会在栈顶,进行删除的时候,是从栈顶开始,所以新插入的元素反而能优先被删除,我们称之为后进先出.而这种插入和删除操作,在栈的用语里,叫做推进(push)和弹出(pop). 举个例子来说,栈的操作有点像一个老师收上来的作业,先交的作业放在下面,后交的作业放在上面,老师在批阅的时候,总是先从上面的

数据结构概述&lt;3&gt;链表的简单应用

今天介绍两个链表的简单应用. 1.约瑟夫问题 假设有N个人决定选出一个领导人,方法如下:所有人排成一个圆圈,按顺序数数,每次数到第M个人出局,此时,他两边的人靠拢重新形成圆圈.问题是找出哪一个人将会是最后剩下的那个人.下列程序依次读入N和M,并给出最终结果. #include <stdlib.h> #include <stdio.h> typedef struct node* link; struct node { int item; link next; }; int main(