1.前言

最近在复习巩固数据据结构基础,以阅读程杰的《大话数据结构》为主。“最淡的墨水也胜于最强的记忆”。下面是阅读本书中的一些基础要点笔记。

2.基本概念和术语

1.数据

正所谓“巧妇难为无米之炊”,再强大的计算机也是要有米下锅才可以干活的,否则就是一堆废铜烂铁,这个“米”就是数据。那么数据的概念是什么呢?

  1. 数据:是描述客观事物的符号,是计算机中可以操作(可以操作应该是指数据即符号所具备的两个前提:
    1. 可以输入到计算机中
    2. 可以被计算机程序处理的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形实型等数值数据,还包括声音图片视频等非数值型数据。对于整形等数值类型,可以进行数值计算。对于字符数据类型,就需要进行非数值的处理。而声音,视频,图像等其实是可以通过编码的手段变成字符数据来处理的。
2.数据元素

数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。比如说在人类中人就是数据元素,在畜类中牛马等动物就是畜类的数据元素。

3.数据项

数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。比如说人这个数据元素可以由性别,姓名,地址等这些数据项组成,也可以由脚手耳朵鼻子等数据项组成。具体有哪些数据项,要视你的系统决定

4.数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。那么什么是性质相同呢?性质相同就是指数据元素具有相同类型和数量的数据项。比如说张三,李四这些人都有性别,姓名,地址这些数据项,由张三,李四这些数据元素构成的集合称为数据对象。既然数据对象是数据的子集,那么在实际应用中处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们将数据对象简称为数据。

5.数据结构

在现实世界中不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。比如说一群排队中的人,按照逻辑结构这些数据元素之间有线性关系。

  1. 数据结构:是相互之间存在一种或则多种特定关系的数据元素的集合。

3.逻辑结构与物理结构

1.逻辑结构

按照视点的不同我们将数据结构分为逻辑结构和物理结构。

  1. 逻辑结构:是指数据对象中数据元素之间的相互关系。逻辑结构是面向问题的。逻辑结构分为以下四种:
    1. 集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。
    2. 线性结构:线性结构之间的元素之间是一对一的线性关系
    3. 树形结构:树形结构中的数据元素之间存在一种一对多的层次关系
    4. 图形结构:图形结构的数据元素是多对多的关系。
2.物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式(很多书中也叫做存储结构)。物理结构是面向计算机的。数据的存储结构应当正确反映数据元素之间的逻辑关系,这才是最关键的。数据元素的存储结构形式有以下两种:

  1. 顺序存储结构:顺序存储结构是指把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。比如说c++语言中的数组,动态数组
  2. 链式存储结构:是把数据元素放在任意的存储单元里,这组存储单元可以是连续的也可以是不连续的。数据元素的存储结构关系并不能反映逻辑关系。

4.总结

程序设计的实质是对确定的问题选择一种好的数据结构,加上设计一种好的算法。即程序设计=数据结构+算法。 数据结构的基本目标是将数据及其逻辑关系存储进计算机的内存中。数据结构是一门研究非数值计算的程序设计问题的操作对象,以及他们之间的关系和操作等相关问题的学科。