【数据结构】数据结构是什么

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

早期的计算机主要用于数值计算,现在,计算机主要用于非数值计算,包括处理字符、表格
和图像等具有一定结构的数据。这些数据内容存在着某种联系,只有分清楚数据的内在联系,合
理地组织数据,才能对它们进行有效的处理,设计出高效的算法。如何合理地组织数据、高效地
处理数据,这就是 “数据结构” 主要研究的问题。

对于我们目前的学习来说,仅仅只是觉得数据结构在学习怎么去做题,刷题,但是为什么去学习数据结构,我觉得我们依然要保留这样的疑问去学习,才能明白其中的本质。

我说一些个人观点,最开始我们学习变量,各种数据类型的变量,整型,浮点型,为了掌握这些东西我们进行了大量的训练,大多都是解决数学问题,随着练习的深入,后来发现单纯的一些数据类型已经满足不了我们的一些需求了,所以我们出现了结构体,它为我们将多个不同数据结构用一个东西替代了,于是我们可以用结构体去表示一个学生,有名有姓有身高体重。

再后来学到cpp,python这样的语言出现了面向对象,为什么会学到面向对象的语言呢?

比如我们现在使用编程"造一个人"出来,暂且只说他有姓名身高体重,会吃饭会上学会写作业。好那我们是不是需要写一份存储着他身高体重姓名的变量和能让他吃饭上学写作业的函数?现在需求来了,我们还要造一个他的双胞胎,他们除了名字其他都差不多一样,那现在我们岂不是又得写一份差不多的代码,只是名字改变了。其实这就是问题。

但是面向对象不一样,面向对象出现了一个十分重要的概念----类,他完美解决了重复写代码的操作。(其实我感觉从某个方面来说编程进步的原因主要是dalao们因为懒然后做出了更加便捷的东西供后人使用哈哈哈哈哈当然我的个人想法)。扯远了。

所以说一个时期学习一个时期的东西,为什么出现了数据结构呢?是因为已有的一些东西已经开始让我们觉得处理问题困难即便实现了也十分麻烦,而数据结构就是将这些东西归纳成了。依旧是以前的东西,但是从某方面来说将学到的基本知识归纳了,从而去解决某一类型的问题。

一、一些基本术语

早期的计算机主要用于数值计算,现在,计算机主要用于非数值计算,包括处理字符、表格和图像等具有一定结构的数据。这些数据内容存在着某种联系,只有分清楚数据的内在联系,合理地组织数据,才能对它们进行有效的处理,设计出高效的算法。如何合理地组织数据、高效地处理数据,这就是 “数据结构” 主要研究的问题。

  1. 数据 (Data) 是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号 的总称。如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形、 图像、声音及动画等通过特殊编码定义后的数据
  2. 数据元素(Data Element)是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。 在有些情况下,数据元素也称为元素、记录等。数据元素用千完整地描述一个对象,一名学生记录,图中的一个顶点等。
  3. 数据项 (Data Item) 是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。
  4. 数据对象 (Data Object) 是性质相同的数据元素的集合,是数据的一个子集。例如:整数数 据对象是集合N= {O, 士1’ 士2,…}, 字母字符数据对象是集合C= {‘A’,‘B’, …,‘Z’,‘a’,‘b’, …, ‘z’}, 学生基本信息表也可以是一个数据对象。由此可以看出,不论数据元素集合是无限集(如 整数集),或是有限集(如字母字符集),还是由多个数据项组

二、数据结构

数据结构 (Data Structure) 是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带 ”结构" 的数据元素的集合,“结构” 就是指数据元素之间存在的关系。数据结构包括逻辑结构和存储结构两个层次。

  1. 逻辑结构
    数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立千计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
    数据的逻辑结构有两个要素: 一是数据元素;二是关系。数据元素的含义如前所述,关系是指数据元素间的逻辑关系。
    通常有4个结构:集合结构,线性结构,树结构,图结构或者网状结构
  2. 存储结构
    数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。把数据对象存储到计算机时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素在计算机内用一个结点来表示。
    数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。

三、数据类型和抽象数据类型

  1. 数据类型
    数据类型 (Data Type) 是高级程序设计语言中的一个基本概念,前面提到过顺序存储结构可以借助程序设计语言的数组类型描述,链式存储结构可以借助指针类型描述,所以数据类型和数据结构的概念密切相关。
  2. 抽象数据类型
    抽象就是抽取出实际问题的本质。在计算机中使用二进制数来表示数据,在汇编语言中则可给出各种数据的十进制表示,它们是二进制数据的抽象,使用者在编程时可以直接使用,不必考虑实现细节。在高级语言中,则给出更高一级的数据抽象,出现了数据类型,如整型、实型、字符型等,可以进一步利用这些类型构造出线性表、栈、队列、树、图等复杂的抽象数据类型。抽象数据类型是指由用户定义的、表示应用问题的数学模型 , 以及定义在这个模型上的一组操作的总称, 具体包括三部分:数据对象、数据对象上关系的集合, 以及对数据对象的基本操作的集合

算法与数据结构

算法是为了解决某类问题而规定的一个有限长的操作序列。算法具有五个特性:有穷性、确定性、可行性、输入和输出。一个算法的优劣应该从以下四方面来评价:正确性、可读性、健壮性和高效性。
算法分析的两个主要方面是分析算法的时间复杂度空间复杂度, 以考察算法的时间和空间效率。一般情况下, 鉴于运算空间较为充足, 故将算法的时间复杂度作为分析的重点
算法所需存储空间的量度,简称空间复杂度。
算法执行时间的数量级称为算法的渐近时间复杂度, 简称时间复杂度。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值