大话数据结构与算法:基础篇

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.

2. 数据结构起源与基本概念

       数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作的问题的学科。
       程序设计 = 数据结构+算法

2.1 数据

数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。
比如我们现在常用的搜索引擎,一般会有网页、MP3、图片、视频等的分类。MP3就是声音数据,图片当然是图像数据,视频就不用说了,而网页其实指的就是全部数据的搜索,包括最重要的数字和字符等文字数据。所以,我们所谈到的的数据,其实就是符号,这些符号应该具备两个前提:1,可以输入到计算机中;2,能被计算机程序处理;

2.2数据元素

数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。

2.3数据项

一个数据元素可以有若干个数据项组成。比如人这样的数据元素,可以有眼、耳、鼻、嘴、手、脚这些数据项,也可以有姓名、年龄、行呗、出生地址。联系电话等数据项,具体需要哪些数据项,需要根据我们所做的系统来决定。
数据项是数据不可分割的最小单位

2.4数据对象

数据对象是指性质相同的数据元素的集合,是数据的子集。

3.数据结构分类

按照视点的不同,数据结构可以分为逻辑结构和物理结构。

3.1逻辑结构

逻辑结构是指数据对象中数据元素之间的相互关系。这也是我们后阶段最需要关注的问题。逻辑结构进一步可以细分为:几何结构、线性结构、树形结构、图形结构。

3.2物理结构

数据的物理结构也就是数据的存储结构。物理结构指数据的逻辑结构在计算机中的存储形式。数据是数据元素的集合,那么根据物理结构的定义,实际上就是如何把数据元素存储到计算机的存储器中。存储器主要是针对内存而言的,想硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述。
数据元素的存储结构形式有两种:顺序存储和链式存储。
顺序存储结构是把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(C语言中的数组就是这样的顺序存储结构)
链式存储结构是吧数据元素存放在任意的存储单元中,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反映其逻辑关系。因此需要用一个指针存放数据元素的地址。这样,我们可以通过地址就可以找到相关联数据元素的位置。
相对比之下,我们可以发现,链式存储要比顺序存储灵活得多!数据存储在哪里并不重要,只要有一个指针存放了相应的地址我们就可以找到它。

4.抽象数据类型

数据类型是指一组性质相同的值得集合及定义在此集合上的一些操作的总称。

你可能感兴趣的:(数据结构与算法导论)