数据结构

早期人们用计算机解决问题时,通常将实际问题抽象出一个具体的数据模型,然后以此来设计出解决此数据模型的算法,再编写程序,成为一个完整的软件。

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。

程序设计=数据结构+算法

到底什么是数据结构呢,以下是我结合资料的理解(若有错误希望能够指出)。
数据结构有“数据”也有“结构”,那我们先谈一下数据。

数据是什么呢?先引出数据的定义:

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号的集合。

通俗来说就是整型、实型等数值类型,同样包括字符、声音、图片、视频等非数值类型。
我们所说的数据,实际上是符号,这些符号需要具备两个前提:

  1. 可以输入到计算机中;
  2. 可以被计算机的程序处理;

整形实型的数据,我们直接可以通过数值来处理,而字符型数据,需要进行非数值的处理;声音、图片视频等则需转换成字符数据处理。

了解了数据,我们再来说一下数据的组成,这里要引出数据元素的定义。

数据元素:是组成数据的、具有一定意义的基本单位,在计算机中通常作为整体处理,也被成为记录。

该如何理解呢?举个例子,人的一个整体中的数据元素是什么?就是人;有男人,有女人,有老人,有小孩,各种各样的人,但是他们归根结底都是人,就是人类中的数据元素。

如果把数据元素细分又是什么呢?这就引出了数据项;

数据项:一个数据元素可以由若干个数据项组成。

还是刚才的例子,一个人是人类中的数据元素,那么这个人的鼻子眼睛嘴巴耳朵眉毛手脚就是他的数据项,同样可以是这个人的身高体重习惯爱好等数据项,具体的数据项需要由你做的系统来决定。

知道了数据元素,那性质相同的数据元素又是什么呢,这就是数据对象。

数据对象:是性质相同的数据元素的集合,是数据的子集。

刚才人的例子,人都有姓名、性别、身高、体重等相同的数据项,这就是性质相同;
通常处理的数据元素都具有相同的性质,而数据对象又是数据的子集,为了不混淆,我们把数据对象简称为数据。

数据就是这些,总结一下:
相同类型的数据项组成了数据元素,各种性质相同的数据元素共同组成了数据对象也就是数据。
说完了数据,接下来就是结构了;

结构,通俗的来说就是关系。由于数据元素存在不同,通过特定搭配和排列就可以将他们联系起来,这就是结构。

知道了结构,说了这么多,那么数据结构到底是什么呢?

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

这个定义已经很清楚了,举个例子就是将图书馆的不同的书转换为一些字符数据存入电脑中,然后将它们进行组合联系,对这些数据对象进行操作。
数据结构可以分为两种,逻辑结构和物理结构(存储结构);

逻辑结构
是数据对象中数据元素之间的相互关系;分为集合结构,线性结构,树形结构,图形结构;

集合结构:集合结构中数据元素除了同属于同一个集合外,之间没有任何关系。
集合结构中元素都是平等的,属于同一个集合;
线性结构:线性结构中的元素是一对一的关系;
树形结构:树形结构中的数据之间存在一种一对多的层次关系。
图形结构:图形结构的数据元素是多对多的关系;

物理结构(存储结构)
指的是数据的逻辑结构在计算机中的存储形式。

物理结构反映的是数据元素之间的逻辑关系。

物理结构分为两种:顺序存储结构和链式存储结构。

顺序存储结构:将数据元素存放到地址连续的存储单元中,数据间的逻辑关系和物理关系是一致的。
最典型的例子就是数组,当用整型数据定义了一个存放10个数据的数组时,计算机将内存中开辟出来一段连续的空间去存储输入的整型数据,第一个数据放在第一个位置,第二个放在第二个位置。。。。。依次摆放。
链式存储结构:将数据元素存放在任意的存储单元中,存储单元可以连续,也可以不连续。数据间的逻辑关系和物理关系是不一致的。
这里就需要用指针来存放数据元素的地址,以便于在混乱的存储单元中快速准确的找到相应的数据。
链式存储结构就显得尤为灵活,不用去关心数据存放在哪里,只需要通过指针存放好数据的地址就可以了。

/这就是我对数据结构开始学习的一个总结,这是我学习的第一章,通过写文章的方式来理清楚思路,使自己对数据结构的概念有更深的理解,其中借阅了很多资料,同时希望能与跟多的人相互交流,如果文章内容有问题的话欢迎讨论。希望大家共同进步!/

上一篇:MySQL上机第一章,创建S,C,T,SC,TC表


下一篇:C++中stoi(),atoi() ,to_string()使用技巧