一、引言
数据结构这门课相信大家都不陌生,只要想从事计算机相关与互联网相关的工作,这门课都是必不可少的课。但是我并不是计算机专业学生,作为一个电气专业的学生,接触到的编程基本都是底层编程,无论是汇编语言(微机原理)、C语言(偏底层的应用,如单片机)、数据库等。因此,我们的课程中并没有数据结构这门课,但是我比较喜欢编程,因此,我将自学数据结构,希望通过写博客的方式巩固自己的所学。本人菜鸟一枚。希望有人能指出我的不足与错误。开始我的学习!!!
二、书籍选择
我这里选择了程杰的大话数据结构(C语言版),听说这本书讲得很好,适合初学者,那咱就用起来,但是我虽然学了C语言,但是我比较喜欢Java,并且将Java作为主要掌握的语言,因此,我通过学习C语言版数据结构后,会再用Java进行重新改写一遍,由于语言的特点,C语言与Java的数据结构有细微的差别,但本质上并没有太大差别。
三、数据结构基本概念
数据结构的起源:早期人们把计算机作为一种计算工具,计算机解决问题首先从具体问题中抽象出一个适当的数据模型,设计出一个解此模型的算法,然后再编写程序,得到一个实际的软件。可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好地处理问题。所以:
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
基本概念和术语:
- 数据:是描述客观事物的符号,是计算机中可操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据具有两个前提:可以输入到计算机中。能被计算机程序处理。
- 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
- 数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。
- 数据对象:是性质相同的数据元素的集合,是数据的子集。
- 数据结构:不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。
看了一大堆,是不是有点迷惑这几个概念,举个例子:人类(数据)、某一个人(数据元素)、某一个人的姓名、年龄等(数据项)、中学生或者老年人等特定群体(数据对象)、每个人直接错综复杂的关系(数据结构)。
逻辑结构与物理结构:
- 逻辑结构
集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系
线性结构:线性结构中的数据元素之间是一对一的关系。
树形结构:树形结构中的数据元素之间存在一对多的层次关系
图形结构:图形结构的数据元素是多对多的关系。 - 物理结构
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
好了,数据结构基本概念到这里结束了,想一起学数据的伙伴们可以关注我的本专栏哦。后续会逐步学习各种数据结构与算法。