GESP C++&Python 六级认证考试大纲、课程设计

(一)知识点详述
- 1. 掌握树的基本概念,掌握其构造与遍历的相关算法。
- 2. 掌握哈夫曼树、完全二叉树、二叉排序树的相关概念和应用。
- 3. 理解哈夫曼编码、格雷编码相关原理并能进行简单应用。
- 4. 掌握深度优先搜索算法(DFS)、宽度优先搜索算法(也称广度优先搜索算法,BFS)、二叉树的搜索算法的概念及应用,能够根据现实问题,选择合适的搜索算法。
- 5. 掌握简单动态规划的算法思想,能够使用代码解决相应的一维动态规划问题和简单背包问题。
- 6. 掌握面向对象的思想,了解封装、继承、多态的基本概念,并掌握类的创建和基本的使用方法。
- 7. 掌握栈、队列、循环队列的基本定义,应用场景和常见操作。
(二)考核目标
掌握树的基础知识,并能够分辨和使用哈夫曼树、完全二叉树、二叉排序树。掌握搜索算法,可以根据不同的实际问题选择最优的搜索算法。掌握动态规划的思路和步骤,能够解决一维动态规划问题和简单背包问题。掌握面向对象的概念和特性,了解与面向过程思想的不同之处,并掌握类的创建及其基本使用方法。掌握栈、队列、循环队列的基本定义和常见操作,并可根据实际情况选择合适的数据结构。
(四)知识点描述
- • 宽度优先搜索算法 (也称广度优先搜索算法, BFS)
(五)题型分布
课时一:树的基础概念与遍历算法
教学目标
- 1. 理解树结构的定义、基本术语(节点、根、父节点、子节点、叶节点、深度、高度等)。
- 2. 掌握树的逻辑结构与存储方式(双亲表示法、孩子表示法、孩子兄弟表示法)。
- 3. 熟练掌握树的先序、后序、层次遍历算法及其递归与非递归实现。
核心知识点与课程安排
- • 基本概念解析:通过家族树、公司组织架构等生活实例引入树的概念,详解各术语定义。
- • 存储结构剖析:对比分析不同存储结构的适用场景、优缺点及代码实现。
- • 深度优先遍历:详细推导先序、后序遍历的递归过程,并引入栈结构讲解其非递归实现。
- • 广度优先遍历:引入队列结构讲解层次遍历的实现。
- • 实战练习:实现一个通用树结构的创建、存储和三种遍历,并输出遍历结果。
课时二:特殊二叉树 (I) - 完全二叉树与二叉排序树
教学目标
- 1. 掌握完全二叉树的性质、判断方法及在数组中的紧凑存储。
- 2. 理解二叉排序树(BST)的定义、性质及动态维护(查找、插入、删除)。
核心知识点与课程安排
- • 讲解定义与性质(编号规则、父子节点索引关系)。
- • 重点剖析节点删除的三种情况(叶子节点、单子树节点、双子树节点)及处理方法。
- • 实战练习:实现一个二叉排序树,完成一组数据的插入、查找指定值、删除指定节点及中序遍历(验证有序性)操作。
课时三:特殊二叉树 (II) - 哈夫曼树与编码基础
教学目标
- 1. 理解哈夫曼树的概念、构建过程(贪心思想)及带权路径长度(WPL)的计算。
- 2. 理解哈夫曼编码的原理及其在数据压缩中的应用。
核心知识点与课程安排
- • 逐步演示哈夫曼树的构建算法:创建节点、优先队列(最小堆)合并。
- • 实战练习:给定一组字符及其频率,编程构建哈夫曼树,输出每个字符的哈夫曼编码,并计算WPL。
课时四:搜索算法入门 - DFS与BFS
教学目标
- 1. 掌握深度优先搜索(DFS)与广度优先搜索(BFS)的基本思想和算法框架。
- 2. 能区分两种算法的特点及适用场景,并应用于树和图结构的遍历。
核心知识点与课程安排
- • 对比两者在时间复杂度、空间复杂度、解的特性(最短路问题)上的差异。
- • 引入简单网格迷宫问题,分别用DFS和BFS求解路径。
- • 实战练习:在给定的树或简单图结构上,分别使用DFS和BFS进行遍历,并记录节点访问顺序。
课时五:简单动态规划(一维)
教学目标
- 1. 理解动态规划(DP)的核心思想(最优子结构、重叠子问题、状态转移)。
- 2. 掌握一维DP问题的分析步骤:定义状态、推导转移方程、确定边界、编码实现。
核心知识点与课程安排
- • DP思想引入:通过经典的斐波那契数列问题(递归 vs 记忆化搜索 vs DP)引入,感受重叠子问题与优化。
- • 核心步骤精讲:结合“爬楼梯”、“最大子数组和”等经典例题,详细拆解DP四步法。
- • 推导二维
dp[i][j]的状态定义和转移方程。
- • 实战练习:求解一个具体的0/1背包问题实例,并输出最大价值。
课时六:简单动态规划(背包问题变体)与状态机思想萌芽
教学目标
- 1. 理解完全背包问题与0/1背包问题的区别及其状态转移。
核心知识点与课程安排
- • 对比0/1背包,讲解物品无限取用对转移方程的影响。
- • 通过“只能买卖一次股票的最大利润”问题,引入“持有”和“不持有”两种状态。
- • 讲解如何定义
dp[i][0]和dp[i][1],并推导状态间的转移关系。
- • 实战练习:分别编程实现完全背包问题和“买卖股票一次”问题。
课时七:面向对象编程(OOP)基础
教学目标
- 2. 掌握类与对象的基本概念,能定义类、创建对象。
核心知识点与课程安排
- • OOP思想:通过“把数据和操作数据的方法打包在一起”的比喻,讲解类作为蓝图、对象作为实例的概念。
- • 演示构造函数、析构函数(C++)或
__init__(Python)的使用。
- • 封装:介绍访问控制(public/private/protected in C++;命名约定 in Python)。
- • 继承:演示基类与派生类的语法,理解“is-a”关系。
- • 多态:通过基类指针/引用调用虚函数(C++)或鸭子类型(Python)简单介绍。
- • 实战练习:设计并实现一个
Student类,包含姓名、学号等属性及显示信息的方法。尝试创建一个GraduateStudent类继承自Student,并添加新属性(如导师)。
课时八:栈、队列与循环队列
教学目标
- 1. 掌握栈(LIFO)和队列(FIFO)的基本概念、操作及应用场景。
- 2. 理解循环队列的原理,解决普通数组队列“假溢出”的问题。
核心知识点与课程安排
- • 讲解入栈(push)、出栈(pop)、取栈顶(top)操作。
- • 讲解入队(enqueue)、出队(dequeue)、取队首(front)操作。
- • 讲解循环队列利用数组“首尾相接”的实现方式,重点剖析队空、队满的判断条件。
- • 实战练习:用数组实现一个循环队列,并测试其基本操作。尝试使用栈解决一个括号匹配问题。


分享、点赞、在看,3连3连!