裴永磊文库
计算机二级 C++ 基础知识
1.1 算法
算法:是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。 算法不等于程序,也不等
于计算方法,程序的编制不可能优于算法的设计。
(1)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;
(2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;
(3)可行性,算法原则上能够精确地执行;
(4)拥有足够的情报。
算法效率的度量 — 算法复杂度:算法时间复杂度和算法空间复杂度。 ★★★
算法时间复杂度:指执行算法所需要的计算工作量。即算法执行过程中所需要的基本运算次数。 (时间_
次数)
算法空间复杂度:指执行这个算法所需要的内存空间。 (空间_ 内存)
1.2 数据结构的基本概念
数据结构:指相互有关联的数据元素的集合。
裴永磊文库
数据结构研究的三个方面:
(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (原始结构 )
(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构 ; (进行时结构 )
(3)对各种数据结构进行的运算。
线性结构的条件, (一个非空数据结构 ) :
(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3 线性表及其顺序存储结构 (空间存储连续、元素衔接)
线性表的顺序存储结构具有以下两个基本特点:
(1)线性表中所有元素所占的存储空间是连续的;
(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
顺序表的运算:查找、插入、删除。
1.4 线性链表
数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。
结点由两部分组成:
裴永磊文库
(1) 用于存储数据元素值,称为 数据域 ;
(2) 用于存放指针,称为 指针域 ,用于指向前一个或后一个结点。
在链式存储结构中, 存储数据结构的存储空间可以不连续, 各数据结点的存储顺序与数据元素之间的逻辑关
系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
链式存储方式即可用于表示线性结构,也可用于表示非线性结构。
线性链表的基本运算:查找、插入、删除。
1.5 栈和队列★★★★
栈:限定在一端进行插入与删除的 线性表 。
其允许插入与删除的一端称为 栈顶 ,用 指针 top 表示栈顶位置。
不允许插入与删除的另一端称为 栈底 ,用 指针 bottom 表示栈底。
栈按照 “先进后出 ”(FILO)或 “后进先出 ”(LIFO)组织数据,栈具有 记忆作用 。
裴永磊文库
栈的存储方式有顺序存储和链式存储。
栈的基本运算:
(1) 入栈 运算,在栈顶位置 插入 元素;
(2) 退栈 运算, 删除 元素 (取出栈顶元素并赋给一个指定的变量 ) ;
(3) 读栈顶元素,将栈顶元素赋给一个指定的变量,此时指针无变化。
队列:指允许在一端 (队尾 )进入插入,而在另一端 (队头 )进行删除的线性表。
用 rear 指针指向队尾,用 front 指针指向队头元素的前一个位置。
队列是 ―先进先出 ‖(FIFO)或 ―后进后出 ‖(LILO)的线性表。
队列运算: