文档章节

数据结构那些事(一)绪论

零下三度
 零下三度
发布于 2014/05/27 00:04
字数 1122
阅读 170
收藏 17

1.数据的概念

       数据(data)是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。

    数据元素( data element)是数据的基本单位,是数据集合的个体,在计算机程序中通常作为一个整体来进行处理。例如一条描述一位学生的完整信息的数据记录就是一个数据元素。 

2.数据结构研究哪些内容呢?

     数据结构是指相互之间存在一种或者多种特定关系的数据元素集合。

     当初大学学习数据结构的时候,并没有认真去总结这个问题,以至于学习一段时间就忘记了。边学边忘,为了避免这种情况,先必须明白数据结构研究的内容,下面给出一个粗略的图。

     

     一目了然了,数据结构研究内容就是线性结构、树形结构、图形结构、搜索和排序。关于各个内容后续的博客再分别做详细的描述,在此不做过多的赘述了。

3.各种数据结构的元素之间的逻辑关系。

  • 集合:元素之间没有任何关系(逻辑关系)

    二元组表示为set=(K,R) ,其中
    K = {01, 02, 03, 04, 05}
    R = {} 

  • 线性结构在这些数据元素中有一个可以被称为“第一个”(元素01)的数据元素;还有一个可以被称为“最后一个”(元素04)的数据元素;
    除第一个元素以外每个数据元素有且仅有一个直接前驱元素,除最后一个元素以外每个数据元素有且仅有一个直接后续元素。这种数据结构的特
    点是数据元素之间是11 的联系,即线性关系。
     

    一种数据结构的二元组表示为 linearity = (K,R),其中
    K = {01, 02, 03, 04, 05}
    R = {<02,04>, <03,05>, <05,02>, <01,03>} 

    注意:元素之间的关系为1对1,因此适合数据元素关系为1对1场合。

  • 树形结构:在该数据结构中,除了一个数据元素(元素01)以外每个数据元素有且仅有一个直接前驱元素,但是可以有多个直接后续元素。
    这种数据结构的特点是数据元素之间是1 对N 的联系,我们把具有此种特点的数据结构称为树结构。 

    数据结构的二元组表示为tree = (K,R),其中
    K = {01, 02, 03, 04, 05, 06}
    R = {<01,02>, <01,03>, <02,04>, <02,05>, <03,06>}

    注意:元素之间的关系为1对N,因此适合数据元素关系为1对N的场合,例如某个省下面的所有市的缓存存储结构。 

  • 图状结构:在数据结构graph 中,每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素。

  • 这种数据结构的特点是数据元素之间是M N 的联系,我们把具有此种特点的数据结构称为图结构。

    数据结构的二元组表示为graph = (K,R),其中
    K = {01, 02, 03, 04, 05}
    R = {<01,02>, <01,05>, <02,01>, <02,03>, <02,04>, <03,02>,<04,02>, <04,05>, <05,01>, <05,04>}


    注意:元素之间的关系为N对M,因此适合数据元素关系为N对M的场合,例如N个学生选课,有M门课程。

    关于排序和搜索,今天就不提出其相关概念,后面的内容会做详细的记录。本节主要是描述数据的概念、数据的表现形式、数据的逻辑关系、各种数据结构概念描述、二元组的表示及适用场合的简单描述。 


© 著作权归作者所有

零下三度
粉丝 8
博文 11
码字总数 13153
作品 0
朝阳
程序员
私信 提问
数据结构学习笔记-----------------绪论

为了加深自己对数据结构的理解:所以这个专题下会记录我的学习的笔记。 程序设计的实质:对确定的问题选择一种好的结构,加上设计一个好的算法! 计算机解决一个具体的问题,需要经过下列几个...

付炜超
2017/09/03
0
0
JAVA数据结构的个人见解之绪论

JAVA数据结构的个人见解之绪论 概念 一般来说用计算机解决问题总是围绕以下三个主要步骤: (1) 抽象出所求解问题中需要处理的数据对象的逻辑模型。(逻辑结构) (2) 根据所求解问题需要完...

狂奔啦蜗牛
2012/08/23
0
0
数据结构和算法-C语言篇-绪论

数据结构与算法目录 前言 程序设计 = 数据结构 + 算法 什么是数据结构? 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 简单来说数...

香沙小熊
2017/12/26
0
0
Android NDK开发之旅 目录

Android NDK开发之旅 目录 Android NDK开发之旅1--NDK介绍 Android NDK开发之旅2--C语言--基本数据类型 Android NDK开发之旅3--C语言--指针 Android NDK开发之旅4--C语言--动态内存分配 Andr...

香沙小熊
2017/12/31
0
0
Android OpenGL开发目录

Android OpenGL开发目录 Android OpenGL开发1--VS2017+OpenGL环境的配置 to be continued... 其它目录 Android NDK开发之旅 目录 Android NDK开发之旅1--NDK介绍 Android NDK开发之旅2--C语言...

香沙小熊
2018/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux使用源码包安装软件

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 源码包 Linux软件多数免费、开源,是开发人员编写的,具有很强可读性的一组相关代码文本。 源码包 --> 编...

迷失De挣扎
今天
2
0
IPv4如何转换为IPv6?

ipv6已经逐渐在应用,现在已经有很多的运营商支持ipv6,前天我们也发布了如何让电脑使用ipv6地址?有很多朋友在问?ipv6有什么作用,它的表示方式是什么,今天我们来一起来详细了解下ipv6相关计...

xiangyunyan
今天
3
0
小白讲网络安全系列

注入攻击防护 XSS注入 SQL注入 命令注入 文件上传 文件解压缩 CSRF防护 对称加密 非对称加密 数字证书 数字签名 完整性校验 消息验证码 单向散列Hash函数 口令单向加密算法 审计日志 认证鉴权...

一刀
今天
2
0
MYSQL 嵌套事务(SAVEPOINT) 与Spring 事务传播

摘要 savepoint 关键字可以实现嵌套事务。结合savepoint关键字,更方便理解spring的事务传播。 事务嵌套 初始化表脚本 drop table t;create table t(a int, primary key(a)); 开启事务 my...

liangxiao
今天
4
0
Chrome OS 更新新版本可让Linux访问USB连接的Android设备

谷歌再次为Chrome OS带来了重大版本更新,使版本号达到了75。本次更新的一大亮点就是允许在Chrome OS上运行的Linux能够识别通过USB方式连接的Android设备,能够让用户使用Linux进行调试等等。...

linuxCool
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部