数据结构浅析(一):数据结构基本概念

首先会有个疑问,什么是数据结构呢?

数据结构(data structure),可以概括为是互相之间存在一种或多种特定关系的数据元素的集合。

开篇配图来自网络... 那开始吧 :)

一、数据结构起源

1968年,美国 Donald E. Knuth 教授在《计算机程序设计艺术》第一卷《基本算法》中系统阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构课程体系。

70年代初,大型程序相继出现,软件也开始相对独立,结构程序设计成为程序设计方法学主要内容,人们开始认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。也就是 程序设计 = 数据结构 + 算法

现实生活中,更多的不是解决一些数值计算问题,我们需要通过表、树、图等数据结构的帮助来更好地处理问题。

所以数据结构也是一门研究非数字计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。(引用自《大话数据结构》

二、基本概念和术语

1、数据
  • 数据指的是能输入到计算机中,并能被计算机程序处理的对象。
  • 对于数值类型(整型、实型等),可以进行数值计算;
    对于字符数据类型(声音、图像、视频等可通过编码转化为字符数据),可以进行非数值处理。
2、数据元素
  • 数据元素指组成数据的、有意义的基本单位,也被称为记录。
  • 如:一部电影里面的女主就是数据元素
3、数据项
  • 数据项是数据不可分割的最小单位,一个数据元素可以由若干数据项组成。
  • 如:一部电影里面女主的姓名、性别等都是数据项,恩,女主性别一般是女...
4、数据对象
  • 数据对象指性质相同的数据元素的集合,是数据的子集;
  • 数据对象简称数据
    什么是性质相同呢?
    性质相同指数据元素具有相同数量和类型的数据项;
    如一部电影中每个角色(数据元素)都有姓名、性别(数据项),这些角色(数据元素)构成了一部电影,那么这部电影所有人物的集合我们可以想象成是一个数据对象。
5、数据结构
  • 数据结构指互相之间存在一种或多种特定关系的数据元素的集合;
  • 数据结构 = 数据元素 + 关系;
    还得用上面的例子,一部电影可以想象成是一个数据结构,是由一个个人物(数据元素)和一个个串联的人物情节(关系)构成,例子有点勉强,大概意思都应该理解的...

三、逻辑结构和物理结构

1、逻辑结构
  • 逻辑结构指数据对象中数据元素之间的相互关系;
  • 逻辑结构分为 集合结构、线性结构、树形结构 和 图形结构;
    1).集合结构:其中的数据元素除同属于一个集合外,之间没有其他关系;


    集合结构

    2).线性结构:其中的数据元素之间是一对一的关系;


    线性结构

    3).树形结构:其中的数据元素之间存在一对多的层次关系;
    树形结构

    4).图形结构:其中的数据元素之间存在多对多的关系。
    图形结构
2、物理结构
  • 物理结构指数据的逻辑结构在计算机中的存储形式;

  • 实际就是如何将数据元素存储到计算机存储器中。这里的存储器主要针对内存而言,像硬盘等外部存储器的数据组织通常使用文件结构来描述;

  • 数据元素的存储结构形式有 顺序存储 和 链式存储 两种;
    1).顺序存储结构
    顺序存储结构:把数据元素存放在地址连续的的存储单元里,其数据间的逻辑关系和物理关系一致;


    顺序存储结构

    2).链式存储结构
    链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元可以是连续的也可以是不连续的。数据元素的存储关系不反映其逻辑关系,用指针存放数据元素的地址,我们通过地址可以找到相关联数据元素的位置。


    链式存储结构
  • 两种物理结构对比来看,链式存储更为灵活

逻辑结构面向问题,物理结构面向计算机,其基本目标是将数据及其逻辑关系存储到计算机的内存中。

四、抽象数据类型

1、数据类型是什么?

数据类型指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

看起来有点模糊,接着往下看。

数据类型按照值的不同进行划分。在高级语言中,每个变量、常量、表达式都有各自取值范围。类型就用来说明变量或表达式的取值范围和所进行的操作。

计算机的内存是有限的,如果只是单纯计算 1+1 =2这样的整型数字运算,我们不需要开辟很大的内存空间,只要满足相应需求的内存空间就可以了。于是计算机领域的前辈们对数据进行分类,不同的数据类型拥有各自的取值范围。这样就可以更好利用有限的内存空间。

例如 C 语言中,数据类型可以分两类:

  • 原子类型:不可再分割的基本类型。如整型、实型、字符型等基本数据类型;
  • 结构类型:由若干类型组成,可再分解。如整型数组就是由若干整型数据组成的。
2、抽象数据类型

1). 上面解释了什么是数据类型,那么为什么要把数据类型抽象出来呢?

不同的计算机有不同的硬件系统,所以需要程序语言最终通过编译器或解释器转化成计算机能够识别的底层语言。然而在我们使用高级语言开发时,如计算 1+1 ,不管最终程序运行在什么计算机上,我们的目的只是为了实现 2 个整型数字的运算,不需要详细知道 CPU 为了实现 1+1 进行了几次开关操作。但无论什么计算机、什么计算机语言都会面临如整数运算这样的操作,那么可以考虑把它们抽象出来,只保留实现目标所必需的信息。

2). 什么是抽象数据类型?
抽象数据类型(Abstract Data Type, ADT):指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于他的一组逻辑特性,与其在计算机内部如何表示和实现无关。

3). 抽象数据类型有什么意义?
"抽象"的意义在于数据类型的数学抽象特性。一个抽象数据类型定义了一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作。

理论的东西说起来总是那么模糊,看一个例子就会发现清晰明了了。

还是之前整数计算的例子。计算机分很多种,大型机、小型机、PC、智能手机等等,但是任何一种都有“整型数据”,也都需要进行“整型数据”运算。那么这里的整型其实就是一个抽象数据类型,它在不同计算机内的实现方法可能不同,但定义的数学特性相同,所以在我们看来是相同的。

抽象数据类型理论的东西提的比较多,概括下也就是为什么会有各种不同的数据类型,同时解释这些数据类型存在的意义是什么...

总结

直接上图吧,一图胜千言...


数据结构层次

逻辑结构与物理结构

本文参考:

《大话数据结构》

Wikipedia - Donald E. Knuth

戳这里 前往我的小屋:I'm Jony :)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容