(1)数据结构概述

2019/11/15

前言:本篇内容是根据郝斌老师数据结构的学习笔记

如有侵权请联系我删除:1462922269@qq.com

如想转载请注明出处谢谢!

 

数据结构概述

 

定义:我们如何把现实中大量而复杂的问题,以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为现实某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法

             

              这里举四个例子:

  1. 假设保存一个班级的学生信息,一共15个人,可以用数组比较好实现

 

  1. 但如果要保存10000个学生信息呢?那么用数组实现就比较困难了,因为数组中的元素是连续存储的,10000个元素想存储就要有10000个连续的内存空间,如果连续的内存不够,那这个问题就无法解决了,连数据保存都不能,更别说操作了,总之当数据量很大的时候,数组实现存储时比较困难的,所以出现了一个新的存储方式:链表



    第1个元素后面的指针,保存着第2个元素的地址,然后第2个元素的指针,保存着第3个元素的地址。。。以此类推,这样就可以全部联系在一起了,虽然不是整体的连续内存,但是可以把内存中一些缝隙的、一些很小的内存能够利用起来,用零散的空间实现存储
  2. 第3个例子,如果要保存一家公司的职位关系:老板、经理、主管、组长等等,如果用链表或者数组来实现,就不太合适了,因为无法分辨出谁是老板、谁是经理、主管。。。那么这个时候就要用结构
  3.  第4个例子,假设要设计一个小区图

 

              小区里面有很多不同的楼,现在要假设要在这些楼之间修路,要保证修的路路程最短,而且它们都要是相通的,

或者说给小区里面设置1个快递点和1个超市点,求这两个结点和其他结点的最短路径,以上两个问题用数组、链表、树都解决不了,只能用来解决

什么是图?图就是里面任何一个结点都可能和另外的结点产生联系

 

 

通过以上的例子,那么什么是数据结构?

            如果想通过计算机解决一个实际问题的时候,想把一个现实中非常复杂的问题,转换成数据,如何保存在计算机内存里面,这就是第一个要解决的问题,如果连数据都保存不到计算机里,那么怎么进行操作呢?操作就无从谈起了,这就是数据结构需要研究的问题。

              前面的定义说过,我们如何把现实中大量而复杂的问题,特定的数据类型特定的存储结构保存到主存储器(内存)中,

换一句话说:特定的数据类型就是:个体(就拿数组举例,每1个体是不是就是1个元素?,再拿链表举例,每1个体就是一个结点)

 

特定的存储结构就是:个体之间的关系(数组举例,他们个体之间的关系是什么?连续存储。再拿链表举例,个体之间的关系是什么?是指针)

 

总之:个体如何来存储?个体和个体之间的关系如何来进行存储?把这两个问题解决了,那么数据的存储问题就解决了

 

数据结构 = 个体 + 个体的关系

算法 = 对存储数据的操作(存储的方式不一样,那么算法就不一样,比如增删改查对于数组和链表来说,是完全不同的算法)---狭义的算法

 

end