目录
1.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 lifetime.(如果你交给某人一个程序,你将折磨他一整天;如果你教某人写程序,你将折磨他一辈子)
"数据结构"是计算机的基础课程,但也是一门不太容易学好的课,它当中有很多费脑子的东西。
1.2数据结构起源
早期人们都把计算机理解为数值计算工具,就是感觉计算机是用来计算的,可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段的帮助,才能更好地处理问题。所以:
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
数据结构的起源可追溯至计算机发展历程。早期,计算机主要用于简单科学计算,数据处理随意,无严谨组织。20世纪 50 - 60年代,高级程序设计语言兴起,FORTRAN、COBOL 带来数组等基本类型,为数据组织提供便利,其概念开始萌芽。1968年,唐纳德·克努特在《计算机程序设计艺术》中系统阐述,使之成为独立学科。此后,软件危机催生软件工程,数据结构助提升软件质量;数据库系统发展,它又为海量数据存储管理筑牢根基。
程序设计=数据结构+算法
1.3基本概念和术语
先来谈谈什么叫数据
1.3.1数据
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
数据不仅仅包括整形,实型等数值类型,还包括字符及声音,图像,视频等数值类型。数据其实就是符号,而且这些符号必须具备两个前提:
- 可以输入到计算机
- 能被计算机程序处理
对于整形,实型等数值类型,可以进行数值计算。
对于字符数据类型,就需要进行非数值的处理。而声音,图像,视频等其实是可以通过编码的手段变成字符数据来处理。
1.3.2数据元素
数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录,结点或顶点。
比如,在人类中人是数据元素,牲畜中,鸡,鸭,牛,羊是数据元素。
1.3.3数据项
数据项:一个数据元素可以由若干个数据项组成
比如人这个数据元素可以有眼睛,耳朵,鼻子,嘴巴这些数据项组成。也可以有姓名,年龄,性别等数据项。
数据项是数据不可分割的最小单位。在“数据结构”这门课中,我们把数据项定为最小单位。
但在真正讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。
数据,数据元素,数据项三者之间的关系
数据>数据元素>数据项
1.3.4数据对象
数据对象:是性质相同的数据元素的集合,是数据的子集。
比如:
整数数据对象是集合N={0,+-1,+-2,......}
字母字符数据对象是集合C={‘A’,‘B’,......‘Z’}
学籍表也可以看作一个数据对象
1.3.5数据结构
不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
在计算机中,数据元素并不是孤立,杂乱无序的,而是具有内在联系的数据集合。
数据结构包括以下三个方面的内容:
1.数据元素之间的逻辑关系,也称逻辑结构
2.数据元素及其关系在计算机内存的表示(对称映像),称为数据的物理结构或数据的存储结构。
3.数据的运算实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。
1.4逻辑结构与物理结构
1.4.1逻辑结构
逻辑结构:是指数据对象中数据元素之间的相互关系。这也是我们今后最需要关注的问题,有四种基本逻辑结构。
1.集合结构
集合结构:集合结构中的元素除了同属于一个集合外,它们之间没有其他关系。
2.线性结构
线性结构:线性结构中的数据元素之间是一对一的关系。
3.树形结构
树形结构:树形结构中的数据元素之间存在一种一对多的关系。
4.图形结构
图形结构:图形结构的元素是多对多的关系。
我们在用示意图表示数据的逻辑结构时,要注意两点:
- 将每一个数据元素看作一个节点,用圆圈表示。
- 元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示。
1.4.2物理结构
物理结构:也叫存储结构,是指数据的逻辑结构在计算机中的存储形式
根据物理结构的定义,实际上就是如何把数据元素存储到计算机的存储器中。
数据的存储结构应正确反映数据元素之间的逻辑关系,这才是最关键的,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
数据元素的存储结构形式主要有四种:顺序存储结构,链式存储结构,索引存储结构,散列存储结构。
1.顺序存储
顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
2.链式存储
链式存储:逻辑上相邻的元素在物位置上可以不相邻,借助指示元素存储的指针来表示元素之间的逻辑关系。
3. 索引存储
在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)。
4.散列存储
根据元素的关键字直接计算出钙元素的存储地址,又称哈希(Hash)存储
若采用顺序存储,则各个数据元素在物理上必须是连续的,若采用非顺序结构,则各个数据元素在物理上是可以离散的。数据的存储结构会影响存储空间分配的方便程度。数据的存储结构会影响对数据运算的速度。
1.5数据类型
1.5.1数据类型定义
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
因为在计算机中的内存不是无限大的,要计算1+1=2,3+5=8这样的整数型数字就不需要开辟很大的内存,于是计算机研究者们就考虑要对数据进行分类,分出来多种数据类型。
在C语言中,按照取值的不同,数据类型可以分为两类:
原子类型:
是不可以再分解的基本类型,包括整形,实型,字符型等。
结构类型;
由若干个类型组合而成,是可再分解的。例如,整型数组是由若干个整型数据组成的。
1.6抽象数据类型
抽象是指抽取事物具有的普遍性的本质
抽象数据类型(Abstract Data Type, ADT):一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。
标签:存储,绪论,1.3,元素,数据结构,数据,结构 From: https://blog.csdn.net/wind_one1/article/details/144928113