为何要选择这样的一个标题呢,固然,主要是要写一系列关于学习数据结构的文章。可是,为何是从0.2呢?由于做为一名计算机专业毕业的学生来讲,实在很差意思说本身从0到1,我真的是怕老师看到后会打过来。。。关于数据结构,多是由于大学时没有学好,反正已经忘了十之八九,这个系列算是复习,巩固,提升。因为大学时的教材已经...因此最近想要再学习数据结构的时候,就选择了《大话数据结构》这本书。程序员
if you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifttime.算法
这是这本书的开场白,至于我为何也选择它做为开场白呢?其一,我尚未到能够教人写程序的高度,可是仍是但愿这一系列文章能够对你有借鉴意义,大牛能够略过,固然,也但愿各位大牛能够指导小弟,不吝赐教,其二,同时也是最重要的,以为这句话很nb有木有,装b利器有木有,整我的的逼格都已经获得了升华有木有。
是时候展示真正的技术了,以上皆是废话,对不起,耽误了您那宝贵的几秒钟,宝宝心理仍是满满的愧疚感呢。。。数据结构
由于我是程序员。。。仅此而已。性能
程序设计的实质是对肯定的问题选择一种好的结构,加上设计一种好的算法。学习
敲代码这件事得难易程度可能很大一部分是由本身决定的,能够像板砖,从这边搬到那边。固然也能够拒绝,写出运行效率更高并且更漂亮的的代码,可是这不是件容易的事,它真的是须要一些关于数据结构的基础。spa
在学习数据结构的过程当中,咱们可能会遇到不少的专业术语,并且这些术语真的很容易相互混搅,因此这里先作一个总结,尽我所能尽可能解释清楚。设计
数据是描述客观事物的富豪,是计算机中能够操做的对象,是能被计算机识别,并输入给计算机处理的符号集合。指针
太抽象了,彻底不知道是什么鬼!
这里有一个很重要的特征“能够输入到计算中”。能够被输入的,必然是能够被处理的,好比一块石头坑定输入不进去更别说被处理,可是若是以一个视频的话,确定是能够被存储的存储器里而且能够被处理的,包括,解码,压缩,格式转换等等。视频
是组成数据的、有必定意义的基本单位,在计算机中一般做为总体处理。对象
好比咱们说树林确定就是由一颗颗树组成的,而这一颗树就能够被称为数据元素。
好比有一个表,存储了不少本书,那么这其中一条关于书的记录就是一个数据元素。
数据项是数据的不可分割的最小单位。好比,包括书名、做者名、分类号、出版单位及出版时间在内的一条书目信息在计算机图书管理程序中被做为一个数据元素来看待。而书名、分类号等被称做数据项。
数据对象是性质相同的数据元素的集合,即具备相同数量和类型的数据项。是数据的一个子集。
例如,整数数据对象的集合可表示为N={0,±1,±2…….},字母字符数据对象的集合可表示为C={‘A’,’B’,…’Z’}。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在现实世界中不一样的数据元素之间并非相互独立的而是存在某种特定关系的,咱们将这种关系称为结构。
按照视角的不一样,数据结构能够分为逻辑结构和物理结构。
逻辑结构是咱们主要须要关注的,是用来描述数据元素之间的特定关系的。咱们根据数据元素之间关系的不一样特性,将数据结构划分为四种类型。
在集合结构中,数据元素之间除了“同属于一个集合”的关系外,别无其它关系。以下图所示的几个小圆,它们之间并不存在特殊关系,除了被包含在同一个大圆内之外。
线性结构中的数据元素之间存在一对一的关系,即相邻数据元素之间具备“前驱”和“后继”的关系,线性表是一个典型的线性结构。栈、队列、串等都是线性结构。
树形结构中的数据元素存在一种一对多的层次关系
图形结构中数据元素间存在多对多的关系。因为“集合”是数据元素之间关系极为松散的一种结构,所以也能够用其它结构来表示它。
物理结构是指数据的逻辑结构在计算机中的存储形式,数据的存储结构应该正确反应数据元素之间的逻辑关系。数据元素的存储结构有两种形式:顺序存储和链式存储。
顺序存储把一系列数据元素存放在一组连续的存储单元内,其数据间的逻辑关系和物理关系应该是一致的。以下图:
顺序表存储密度较大,节省空间;但须要事先肯定容量,在时间性能方面,读运算较快,但在插入和删除元素的时候可能会移动大量的元素所以可能会
链式存储结构把数据元素存放在任意的存储单元内,这组存储单元不必定要连续,此时其存储关系并不能在反映其逻辑关系。在这种状况下,咱们就须要指针来找到相关的元素。今天就到这里了,之后会持续更新。