前言:学习数据结构3点要求:1要先掌握C语言基础,尤其是结构体,内存分配;2放松心态,不要怕难;3把代码量提升上去,多尝试,多练习。
目录
一、初识数据结构
1、数据结构解决什么问题?
生活中把一些复杂的数据,理清楚逻辑关系,想清楚存储方式,以后更高效的去管理。 比如物流,比如图书馆。
例如:
设田径比赛项目有:A(跳高)、B(跳远)、C(标枪)、D(铅球)、E(100m跑)、F(200m跑)。参赛选手的项目表,如下表所列:
姓名 | 项目1 | 项目2 | 项目3 |
丁一 | A | B | E |
马二 | C | D | |
张三 | C | E | F |
李四 | D | F | A |
王五 | B | F |
问如何安排比赛时间,才能使得:
- 每个比赛项目都能顺利进行(无冲突)?
- 尽可能缩短比赛时间.
图的“染色”问题:设项目A~F各表示一数据元素,以O表示。若两个项目不能同时举行,则将其连线。若用四种颜色表示4个时间段,一种着色方案如图所示。
红色时间段(如8-10点)-A、C项目;
浅蓝时间段(如10-12点)B、D项目;
深蓝时间段(如13-15点)E项目;
紫色时间段(如15-17点)F项目。
2、数据结构的意义
- 提高编程能力
- 可复用性,维护性,可读性,效率提升
二、什么是数据结构
数据结构研究计算机数据间关系;
包括数据的逻辑结构和存储结构及其操作;
1、数据的逻辑结构
数据元素之间存在某种关系
1:1 1:n n:n
表示数据运算之间的抽象关系按每个元素可能具有的直接前趋数和直接后继数将逻辑结构分为
“线性结构”和“非线性结构”两大类。
2、数据的存储结构
存储结构:逻辑结构在计算机中的具体实现方法。
存储结构是通过计算机语言所编制的程序来实现的,因而是依赖于具体的计算机语言的。
(1)顺序存储(Sequential Storage):
将数据结构中各元素按照其逻辑顺序存放于存储器一片连续的存储空间中如c语言的一维数组,如表 L=(a1,a2,……,an)的顺序结构
(2)链式存储
将数据结构中各元素分布到存储器的不同点,用地址(或链指针)方式建立它们之间的联系
数据结构中元素之间的关系在计算机内部很大程度上是通过地址或指针来建立的。
(3)索引存储
在存储数据的同时,建立一个附加的索引表,即索引存储结构=数据文件+索引表。
(4)散列存储
根据数据元素的特殊字段(称为关键字key),计算数据元素的存放地址,然后数据元素按地址存放
三、基本概念
1.数据(Data)
数据即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。
2.数据元素(Data Element)
数据元素是数据的基本单位,又称之为记录(Record)。一般,数据元素由若干基本项(或称字段、域、属性)组成。这个才是我们研究的,这个才有意义。