"数据结构(Python语言描述)(微课版)-教案"
数据结构是计算机科学中的一门重要课程,对于软件开发、算法设计和数据分析等领域具有至关重要的影响。该课程旨在帮助学生掌握数据结构的基本概念、算法和实现方法,并应用于实际问题的解决中。
本课程的主要内容包括:数据结构的定义、分类和实现、线性表的定义、分类和实现、链式存储结构、单链表、双链表、静态链表等,以及算法的基本概念和术语、算法评价指标和算法复杂度等。
教学目的:
1. 了解数据结构的基本概念和术语。
2. 掌握线性表和链表的定义、分类和实现。
3. 了解算法的基本概念和术语、算法评价指标和算法复杂度等。
4. 能够设计和实现简单的算法。
教学方法:
1. 通过动画演示、提问、讲授、启发引导和学生自己动手做相结合。
2. 通过Eclipse环境下编辑一个简单的求最大公约数的程序。
3. 通过引入实际问题,引出算法的基本概念和术语。
教学重点和难点:
1. 数据结构的基本概念和术语。
2. 线性表和链表的定义、分类和实现。
3. 算法的基本概念和术语、算法评价指标和算法复杂度等。
教学过程设计:
1. 介绍课程的资源:老师搭建的hustoj在线评测网站、几本教材的PPT、Java软件等供他们下载,自学,要求他们主动学习,提供参考资料给他们。
2. 介绍学习方法、课堂及作业要求、纪律要求、考核方式等。
3. 了解学生的情况:有多少人数准备继续深造(出国、考研等),多少人准备从事软件开发,自己创业等。
教学单元:
1. 数据结构(Python语言描述)(微课版)-教案教学单元:数据结构(本科)课程概述(2学时)
授课班级:17软件4、5、6班
教学内容提要:
1. 课程简介:地位(考研、软件开发岗位必考),在专业知识体系中的位置,就业岗位等。
2. 课程主要内容及学时分配。
3. 课程考核方式。
4. 课程学习方法。
5. 算法的基本概念和术语。
6. Java语言编程回顾。
教学目的:
1. 了解该课程所研究的内容、作用和发展状况,就业岗位,可以考取的证书等。
2. 了解算法基本概念和术语。
3. 在Eclipse环境下编辑一个简单的求最大公约数的程序。
教学方法:
通过动画演示、提问、采用讲授、启发引导、学生自己动手做相结合。
教学过程设计:
1. 利用CC网,介绍课程的资源:老师搭建的hustoj在线评测网站、几本教材的PPT、Java软件等供他们下载,自学,要求他们主动学习,提供参考资料给他们。
2. 介绍学习方法、课堂及作业要求、纪律要求、考核方式等。
3. 了解学生的情况:有多少人数准备继续深造(出国、考研等),多少人准备从事软件开发,自己创业等。
教学单元:
2. 数据结构A——线性表基础(3学时)
授课班级:17软件4、5、6班
教学内容提要:
1. 线性表的定义、分类和实现。
2. 介绍课程的作用,在专业课程中的地位,对个人提升的重要性等,特别强调所有的相关计算机专业的考研以及高级程序员、系统分析师的考试、另外招聘程序员的面试笔试等都会考相关的算法等。
3. 介绍课程的主要内容和学时分配。
4. 鼓励他们考取高级证书,提前到招聘会或者招聘网站上了解最新的岗位需求,提前学些前沿的技术,为就业作准备,介绍一些学生就业情况。
5. 通过最大公约数、一列数中第k大数等例子,介绍计算机算法可以解决的实际问题,引出算法、算法评价指标和算法复杂度等基本概念,并要同学举例说明:现实世界中的有哪些运用计算机算法的地方?
课堂提问:
1. 最小公倍数怎么计算?
2. n个数中第k大数,当数字的个数n非常巨大,而k比较小时,采用什么样的算法,当k的阶和数字个数n相当时,又该如何计算?
小结:
1. 初步认识算法基本概念和术语,一定要分清程序和算法是完全不同的两个概念。
2. 了解课程章节的安排规律。
3. 基本熟悉Java环境的使用,知道如何在Java中进行算法编程。
作业:
习题1(简答1-3,7,8)
预习:算法复杂度分析
复习:Java与算法相关的类库和这些类的使用
3.2.1 线性表的顺序表示和实现
1. 线性表的顺序表示:指的是用一组地址连续的存储单元依次存储线性表的数据元素。用物理位置来表示逻辑结构。
LOC(a)=LOC(a)+li+1
LOC(a)=LOC(a)+(i-1l)*i
2. 顺序表的特点:
随机存取
3. 顺序表的运算顺序表容易实现访问操作,可随机存取元素。但是插入、删除操作是需要移动大量的元素。
2.2 线性表的链式表示和实现
2.2.1 单链表:
1. 单链表概念
2. 单链表的存储结构定义
3. 单链表的操作:算法思想:单链表是非随机存取结构。每个元素的位置信息都包含在前驱结点的信息中,所以取得第i个元素必须从头指针出发寻找。设置一个指针变量指向第一个结点,然后,让该指针变量逐一向后指向,直到第i个元素。
插入操作:要在数据元素a和b之间插入元素x。
3.2.2 掌握循环链表、双链表及静态链表存储结构及其运算实现
教学目的:
1. 了解线性表和链表、单链表、双向链表的定义。
2. 了解单链表的存储和操作。
3. 掌握循环链表、双链表及静态链表存储结构及其运算实现。
教学重点和难点:
1. 线性表的基本概念。
2. 单链表的实现,插入、删除和查询操作。
教学方法:
通过动画演示、提问、采用讲授、启发引导、学生自己动手做相结合。
4.教学单元:《数据结构(本科)》有序线性表广义(6学时)
授课班级:16计科1、16计科2
教学内容提要:
3.4 有序线性表
教学过程设计:
1. 介绍线性表的基本概念。
2. 介绍线性表的顺序存储和链式存储结构对比顺序存储和链式存储的内存组织方式,让学生了解要根据实际场景选择合适的存储结构。
3. 介绍单链表、双向链表的逻辑结构,并画出示意图(黑板)。
4. 提问单链表的插入、删除和查询操作如何实现。
5. 让学生完成一个简单的链表插入节点和删除节点的程序。
提示学生一定要注意要判断引用不为空。否则引发空指针异常。
课堂提问:
1. 能否介绍链表的优缺点?
2. 链表的插入、删除和查询操作如何实现?
小结:
1. 了解线性表和链表的定义、分类和实现。
2. 掌握单链表的存储和操作。
3. 掌握循环链表、双链表及静态链表存储结构及其运算实现。
教学方法:
通过动画演示、提问、采用讲授、启发引导、学生自己动手做相结合。
教学重点和难点:
1. 线性表的基本概念。
2. 单链表的实现,插入、删除和查询操作。
3. 循环链表、双链表及静态链表存储结构及其运算实现。