文档介绍:.1 算法和数据结构的基本概念 1. 算法(1 )算法的基本概念算法是指解题方案的准确而完整的描述。 A. 算法的基本特征: ①可行性; ②确定性; ③有穷性; ④拥有足够的情报。 B. 算法的基本要素:①算法中对数据的运算和操作: 基本的运算和操作包括算术运算、逻辑运算、关系运算和数据传输; ②算法的控制结构:基本的控制结构包括顺序结构、选择结构、循环结构。 C. 算法设计的基本方法:①列举法;②归纳法;③递推;④递归;⑤减半递推技术;⑥回溯法。(2 )算法的复杂度算法的复杂度主要包括时间复杂度和空间复杂度。 A. 算法的时间复杂度: 是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数。即:算法的工作量=f(n) 其中 n 是问题的规模。 B. 算法的空间复杂度: 一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占用的存储空间以及算法执行过程中所需要的额外空间。 2. 数据结构的基本概念数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题: ①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; ②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; ③对各种数据结构进行的运算。(1 )数据结构的定义①数据结构是指相互有关联的数据元素的集合。②数据处理是指对数据集合中的各元素以各种方式进行运算, 包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。③数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。④数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构( 也称数据的物理结构)。常用的存储结构有顺序、链接、索引等存储结构。(2 )数据结构的图形表示在数据结构的图形表示中,对于数据集合 D 中的每一个数据元素用中间标有元素值的方框表示, 一般称之为数据结点, 简称结点; 为了进一步表示各数据元素之间的前后件关系, 对于关系 R 中的每一个二元组,用一条有向线段从前件结点指向后件结点。(3 )线性结构与非线性结构如果一个非空的数据结构满足下列两个条件: ①有且只有一个根结点; ②每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称为非线性结构。 线性表和线性链表 1. 线性表(1 )线性表的基本概念线性表( Linear List )是最简单、最常用的一种数据结构。线性表是由 n(n ≥ 0) 个数据元素组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。(2 )线性表的顺序存储结构线性表的顺序存储结构具有以下两个基本特点: ①线性表中所有元素所占的存储空间是连续的; ②线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。(3 )顺序表的插入运算在线性表采用顺序存储结构时, 如果插入运算在线性表的末尾进行, 即在第 n 个元素之后(可以认为是在第 n+1 个元素之前)插入新元素,则只要在表的末尾增加一个元素即可,不需要移动表中的元素;如果要在线性表的第 1 个元素之前插入一个新元素,则需要移动表中所有的元素。(4 )顺序表的删除运算在线性表采用顺序存储结构时,如果删除运算在线性表的末尾进行,即删除第 n 个元素,则不需要移动表中的元素;如果要删除线性表中的第 1 个元素,则需要移动表中所有的元素。 2. 线性链表(1 )线性链表的基本概念在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针 HEAD 称为头指针,当 HEAD=NULL (或 0 )时称为空表。(2 )线性链表的基本运算线性链表的运算主要有: 线性链表的插入、删除、查找、合并、分解、逆转、复制、排序等。①在线性链表中查找指定元素在非空线性链表中寻找包含指定元素值 x 的前一个结点 p 的基本方法如下: 从头指针指向的结点开始往后沿指针进行扫描,直到后面已没有结点或下一个结点的数据域为 x 为止。当线性链表中不存在包含元素 x 的结点时,则找到的 p 为线性链表中的最后一个结点号。②线性链表的插入为了在线性链表中插入一个新元素, 首先要给该元素分配一个新结点, 它可以从可利用栈中取得。然后将存放新元素值的结点链接到线性链表中指定的位置。③线性链表的删除为了在线性链表中删除包含指定元素的结点, 首先要在线性链表中找到这个结点, 然后将要删除结点放回到可利用栈。(3 )循环链表及其基本运算①在循环链表中增加了一个表头结点, 其数据域为任意或者根据需要来设置, 指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中