基本概念和术语
1)数据:是对客观事物的符号表示。在计算机科学中其含义是指所有能够输入到计算机中并被计算机程序处理的符号集合。
2)数据元素:是数据集合中的一个实体,是计算机程序中加工处理的基本单位。
数据元素按其组成可分为简单型数据元素和复杂型数据元素。简单型数据元素由一个数据项组成,所谓数据项就是数据中不可再分割的最小单位;复杂型数据元素由多个数据项组成,它通常携带着一个概念的多方面信息。
3)数据对象:是性质相同的数据元素的集合,是数据的一个子集。
4)数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间关系和操作等的学科。或者说,数据结构是相互之间存在一种或多种特定逻辑关系的数据元素的集合。数据元素之间的相互关系称为结构(Structure)。
以下为重点掌握内容:
根据数据元素之间的关系,有四类基本的结构:
① 集合(元素之间无密切关系);
② 线性结构(元素之间有一个对一个的关系(1:1));
③ 树形结构(元素之间有一个对多个(1:n)的关系;
④ 图状结构或网状结构(元素之间有多个对多个(n:m)的关系)
线性表、堆栈、队列都可认为是线性结构,树和二叉树都是树形结构,而图则属于图状结构。
注意:广义表是线性表的推广,其数据元素可以具有不同的结构,不是线性结构;二叉树属于树形结构;稀疏矩阵是指那些非零元素较少且分布没有规律的矩阵,往往用三元组顺序表法、行逻辑连接的顺序表法,以及十字链表法来存储,也不是线性结构;而串是一种线性结构。同线性表不同,串的数据对象约束为字符集,且在串的基本操作中,通常以“串的整体”作为操作对象。
这个必须知道:数据项是数据的最小单位。
逻辑结构和存储结构:
逻辑结构主要用于描述数据元素之间的逻辑关系
而存储结构是指数据结构在计算机中的表示,又称为物理结构。
常用数据结构的逻辑结构和存储结构
-- 线性结构:可以有顺序、链式、索引和散列四种存储方式。
-- 树形结构:一般采用链式存储方式;在特定的情况下,也可以采用顺序结构(如一维数组)来存储树形结构。
-- 图状结构:一般只能采取链式存储方式;有时可以采用矩阵存储(邻接矩阵法)。
从逻辑上可以把数据结构分为线性结构、非线性结构 两大类。
从存储上可以分为顺序结构和链式结构。
栈是线性表的一种特殊类型,具有“后进先出”的特性,同存储结构没有关系。
数据的逻辑结构是指数据的各数据元素之间的逻辑关系。
算法定义及其特征
1)算法的定义: 算法是解决某个特定问题的一种方法或一个过程。
计算机对数据的操作可以分为数值性和非数值性两种类型。在数值性操作中主要进行的是算术运算;而在非数值性操作中主要进行的是检索、排序、插入、删除等等。
2)设计算法的基本过程
① 通过对问题进行详细地分析,抽象出相应的数学模型;
② 确定使用的数据结构,并在此基础上设计对此数据结构实施各种操作的算法;
③ 选用某种语言将算法转换成程序;
④ 调试并运行这些程序。
3)算法的五大特征
①有穷性;②确定性;③可行性;④输入;⑤输出。
4)算法效率的度量——时间复杂度
算法执行时间需要该算法所对应的程序在计算机上执行时所消耗的时间来衡量。计算消耗时间可以采用事后统计的方法,也可采用事前分析估计的方法。但问题在于,同一个算法用不同的语言来实现,在不同的计算机上运行,效率均不相同。这说明,使用绝对的时间的概念来衡量算法的效率是不全面的。
基础要打牢,等会做会题目巩固一下。
数据结构相比c语言来说,我觉得更有意思。偏偏,数据结构又难学。所以,我喜欢虐一点儿。哈哈哈。
学好数据结构很重要啊,那么重要。
记不清这是第几次从头来学数据结构了。总是学过一遍觉得明白了,然后做题也会做。到了过几天,又清零了。还有,后面的排序和查找学的很差。得好好学学。不管怎么说,这也算开头了。一天一到两篇博客还是可以的我觉得。