第一部分 公共基础知识
第 1 章 数据结构与算法
1.1 算法
1. 算法的基本概念
(1) 概念:算法是指一系列解决问题的清晰指令。
(2)4 个基本特征:可行性、确定性、有穷性、拥有足够的情报。
(3) 两种基本要素:对数据对象的运算和操作、算法的控制结构 ( 运算和操作时问的顺
序) 。
(4) 设计的基本方法:列举法、归纳法、递推法、递归法、减半递推技术和回溯法。
2. 算法的复杂度
(1) 算法的时间复杂度:执行算法所需要的计算工作量。
(2) 算法的空间复杂度:执行算法所需的内存空间。
1.2 数据结构的基本概念
数据结构指相互有关联的数据元素的集合, 即数据的组织形式。 其中逻辑结构反映数据
元素之间逻辑关系 ; 存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存
储、链式存储、索引存储和散列存储 4 种方式。
数据结构按各元素之间前后件关系的复杂度可划分为:
(1) 线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继
的非空数据结构。
(2) 非线性结构:不满足线性结构的数据结构。
1.3 线性表及其顺序存储结构
1. 线性表的基本概念
线性结构又称线性表,线性表是最简单也是最常用的一种数据结构。
2. 线性表的顺序存储结构
?元素所占的存储空间必须连续。
?元素在存储空间的位置是按逻辑顺序存放的。
3. 线性表的插入运算
在第 i 个元素之前插入一个新元素的步骤如下:
步骤一:把原来第 n 个节点至第 i 个节点依次往后移一个元素位置。
步骤二:把新节点放在第 i 个位置上。
步骤三:修正线性表的节点个数。
在最坏情况下,即插入元素在第一个位置,线性表中所有元素均需要移动。
4. 线性表的删除运算
删除第 i 个位置的元素的步骤如下:
步骤一:把第 i 个元素之后不包括第 i 个元素的 n-i 个元素依次前移一个位置 ;
步骤二:修正线性表的结点个数。
1.4 栈和队列
1. 栈及其基本运算
(1) 基本概念:栈是一种特殊的线性表,其插入运算与删除运算都只在线性表的一端进
行,也被称为“先进后出”表或“后进先出”表。
?栈顶:允许插入与删除的一端。
?栈底:栈顶的另一端。
?空栈:栈中没有元素的栈。
(2) 特点。
?栈顶元素是最后被插入和最早被删除的元素。
?栈底元素是最早被插入和最后被删除的元素。
?栈有记忆作用。
?在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素。
?栈顶指针 top 动态反映了栈中元素的变化情况
(3) 顺序存储和运算:入栈运算、退栈运算和读栈顶运算。
2. 队列及其基本运算
(1) 基本概念:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称“先
进先出”的线性表。
?队尾:允许插入的一端,用尾指针指向队尾元素。
?排头:允许删除的一端,用头指针指向头元素的前一位置。
(2) 循环队列及其运算。
所谓循环队列, 就是将队列存储空间的最后一个位置绕到第一个位置, 形成逻辑上的环
状空间。
入队运算是指在循环队列的队尾加入一个新元素。
当循环队列非空 (s=1) 且队尾指针等于队头指针时,说明循环队列已满,不能进行人队
运算,这种情况称为“上溢”。
退队运算是指在循环队列的队头位置退出一个元素并赋给指定的变量。 首先将队头指针
进一,然后将排头指针指向的元素赋给指定的变量。当循环队列为空 (s=0) 时,不能进行退
队运算,这种情况