数据结构课程简介

2024-05-26 版权声明 我要投稿

数据结构课程简介(共8篇)

数据结构课程简介 篇1

Course Design of Data Structure

课程代码:

适用专业:信息计算、信息安全 总学时数:1周编写年月:2004年7月

执 笔:刘科峰、李小英、高学军

课程性质:设计(论文)/必修 开课学期:5 总学分数:1 修订年月:2007年7月

一、课程设计的性质和目的

《数据结构课程设计》是本学院本科专业的集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合应用练习。其目的就是要达到理论与实际相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。

二、课程设计内容及学时分配

写出不少于3000字的课程设计说明书。说明书中除了在封面中应有题目、班级、姓名、学号和课程设计日期以外,其正文一般有如下几个方面的内容:

1.需求分析 2.概要设计 3.详细设计 4.调试分析 5.测试结果 6.附录或参考资料

三、课程设计教学基本要求

四、课程设计选题

根据教材《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,或选择下列与实际应用紧密结合的较综合性的题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。

1. 运动会分数统计系统; 2. 停车场管理系统; 3. 民航售票系统; 4. 有理数四则运算器; 5. 文本格式化器; 6. 哈夫曼编/译码器; 7. 教学计划编制; 8. 计算机辅助考核系统;

9. 学籍管理系统; 10. 图书管理系统。

五、本课程与其它课程的联系与分工

本课程是《数据结构》的配套课程,学完《数据结构》后进行的综合性课程设计。

六、成绩评定

由指导教师根据学生完成任务的情况、课程设计说明书的质量和课程设计过程中的工作态度等综合打分。课程设计结束时,要求学生写出课程设计报告,可运行的软件系统(包括源程序)。课程设计成绩:上机情况(20%)包括出勤情况、调试表现。设计报告占40%,设计作品占40%。

成绩评定实行优、良、中、及格和不及格五个等级。优秀者人数一般不得超过总人数的20%。不及格者不能得到相应的学分,需重新做课程设计,经指导教师考核及格后,方可取得相应学分。有关的考查相关材料(文字材料以及磁盘或光盘)统一妥善保管。

七、建议教材与教学参考书

[1] 《数据结构》,严蔚敏 吴伟民 编著,清华大学出版社

数据结构课程简介 篇2

《数据结构》是计算机应用技术、信息管理等专业的一门专业核心必修课程,主要探讨在面对实际应用问题求解时数据的逻辑组织、计算机内的物理实现及相关操作的实现算法。在计算机科学中,数据结构不仅是一般程序设计的基础,还是设计和实现编译程序、操作系统、数据系统及其它系统程序和大型应用程序的重要基础[1]。通过课程系统学习,使学生掌握实际问题求解过程中组织、存储及处理数据的基本方法。对于即将从事程序设计和软件开发工作的学生,该课程的学习效果将直接影响其对专业的兴趣及对后续课程的理解和掌握能力。

由于课程概念抽象、算法繁多,不少学生反映课程学习难度大,不易理解和掌握。如何在学生学习基础薄弱、教学课时有限、课程教学难度大等约束条件下获取最优教学质量,并使学生程序设计能力和计算思维能力得到提升和发展值得思考。本文从分析《数据结构》课程存在的问题出发,结合教师多年的授课经验,通过以微课程为核心的新型教学模式实践探索,总结出其适用于信息化教育环境的实施方案。

1《数据结构》课程教学存在的问题

1.1 课堂理论教学枯燥晦涩,难以激发学生学习兴趣

传统的课堂教学一般以教材为依据、教师为主体、讲授为主要教学方式,教师期望通过灌输将知识“塞”进学生脑袋,而忽视了学生的学习需求和接收消化知识的能力。此外,由于整个教学过程需要按照预先编写的教学大纲和教学工作计划表组织,在有限的课堂时间里,教师仅仅通过简单的课堂问答和作业练习无法准确了解学生真实学习效果。随着学习进度的深入,学生的学习兴趣减弱,课堂听讲专注度下降,作业敷衍了事,教学效率低。

将多媒体教学引入课堂后,《数据结构》课程教学方法稍有改变,PPT课件结合板书的教学使得教学效率得到提升,但部分算法仅靠教师讲解代码分析,缺乏动态变化的直观性效果,且多媒体授课存在信息量大、学生听课期间认知负荷重、理解困难等问题,阻碍了对知识的建构学习,严重影响了学习者的学习效率。

1.2 上机实验教学流于形式,效率较低

目前,《数据结构》课程上机实验教学流程为:①教师布置实验任务,课堂上利用少量时间进行介绍,学生动手编码调试,教师巡回进行答疑指导。实验任务设计一般以课本教材为主,与现实问题结合较少,难以吸引学生兴趣;②由于学生在先修的程序设计课程中所处理的问题较为简单,当面临数据结构多个功能函数调用的算法要求时,大部分学生缺乏分析问题并设计算法解决问题的能力;③实验课时有限,而部分的实验内容是相互关联、层层递进的,需要花大量的课余时间来研究分析,学生没有做到这点,造成问题堆积。

同时,由于每次实验教师仅靠学生提交的实验报告和算法编码进行成绩评定,没有很好的监管机制,少数学生在自身无法完成程序设计及任务调试时,就复制或“借鉴”他人的报告或代码,企图蒙混过关;还有一部分学生虽然态度认真,但因为细节原因调试程序失败,学习积极性受到影响,自我放弃,程序设计能力难以得到提升。

2 基于微课程的《数据结构》教学探索

2.1 微课程概念与特点

微课程又名迷你课程或微型课程,是将原有学科课程内容运用建构主义方法进行分化,结合学生学习规律,分解成对应教学过程和教学资源的微型系列化课程体系。微课程的雏形最早见于美国北爱荷华大学Leroy A McGrew教授1993年所提出的60秒课程[2]。2008年美国新墨西哥州圣胡安学院的David Penrose提出了“Micro-Lecture”的概念[3],从而引发了国内外学者对微课程的全面系统化研究。李玉平教师组织的微课程培训、胡铁生教师倡导的微课理念、可汗学院的微教学视频等,促使微课程成为“微时代”网络化课程中崭新的一员。

目前对微课程的定义很多,不同学者有自己的解读。刘明卓等[4]认为:微课程是指按照新课程标准及教学实践要求,以教学视频为主要载体,反映教师在课堂教学过程中针对某个知识点或教学环节而开展教与学活动的各种教学资源的有机组合;余胜泉等[5]研究者定义微课程是以阐释某一知识点为目标,以短小精悍的在线视频为表现形式,以学习或教学应用为目的的在线教学视频。无论何种定义都强调了微课程的几个特征:信息技术成为首要的载体选择,移动终端成为学习的主要平台;微型的碎片化学习内容设计;多种学习情境的灵活应用等。

2.2 微课程研究理论基础

研究微课程教学模式过程中,主要理论基础有:

人本主义学习理论认为在合适的条件下,每个人具有的学习、发现、经验的潜能是能够释放出来的。学习者可以通过自主学习去激发自身潜能,求得自身充分的发展[6]。教师在教学设计中应有意识地引导学生发掘自身优势融入学习。

建构主义学习理论认为“情境”、“协作”、“会话”和“意义建构”是学习环境中的四大要素或四大属性[7]。学生在自身原有的经验基础之上理解新信息,从而完成对新知识的意义建构。教师开展教学时应提供充分的学习资源,创设与学生契合的学习情境,并提供多元化的交流协作平台。

教学过程最优化理论强调在现有的教学环境下,教师需要充分考虑各项教学要素,对整个教学过程进行有效的监控,使相关教师和学习者消耗最少的必要劳动时间,获得最好的教学效果。

3《数据结构》微课程设计基本思路

微课程设计包括4个阶段:选题、教学设计、课件制作、拍摄录制及后期制作。

3.1 选题阶段

微课制作时需以学生为中心,从学生的角度看问题。因此在备课期间,教师需要充分了解学习者的基本情况(包括知识及技能起点、学习风格和态度等),从而合理设定课程的教学内容和教学目标,选择适合微课的知识点。如《数据结构》课程绪论章的知识点分析如表1所示。

在进行选题时需遵循宜小不宜大、宜少不宜多的原则,教师要在众多知识点中进行分析筛选,如基本概念中的“数据”、“数据项”等知识点,课堂教学中就可以讲解清楚;而介绍数据结构的作用内容时,教师可以通过案例分析,鼓励学生采用猜想与验证、迁移与类比、交流与辨析的思想来完成,无须做成微课。

通过对数据结构教学内容和学习者的分析,绪论章适合制作成微课的内容总结如表2所示。

3.2 教学设计阶段

在进行教学设计时,应做到:教学对象分析深入细致;教学目标清晰可见;教学内容制作充实严谨,深入浅出;教学过程的组织和安排符合学习者的认知规律,脉络清晰,重点突出;灵活运用教学策略,详尽和有趣地诠释知识,激发学习者兴趣和思考。

数据结构的理论概念比较抽象,教学时应与具体生活实例相结合,通过案例分析、问题引导等方式进行讲授,如队列的知识可以结合日常生活的排队现象,图的遍历可以结合对当地的旅游路线设计等进行讲授,便于学生理解;而算法设计部分则可以通过流程图分析、动态演示系统、Flash动画积件等方式,让学生有直观化的学习体验。

3.3 课件制作阶段

微课制作方法有多种,但大都需要有良好的课件支持。制作课件的常用工具是PowerPoint,制作时应遵循以下原则:精选美观大方的设计模板进行制作;文字大小适宜,方便学习者辨认阅读;每张幻灯片突出一个主题,对关键字进行精炼标示,方便学生记忆;选用合适的图片,提供直观视觉感受和体验,丰富讲述事实和内容;通过自定义动画和幻灯片切换功能设置动画效果,动静结合,给予学习者动态感、空间感的美。

3.4 微课拍摄录制及后期制作阶段

在微课视频制作之前,需要进行慎重的媒体分析,选择最优化的媒体组合。微课视频可选用PPT演示加配音的形式来表现,设计时结合动画演示,教学效果较好。当然,拍摄时还要适度考虑艺术设计,如场景布置、教师的衣着打扮、镜头表现等。

脚本设计是制作微课程的重要环节。以“头插法创建单链表”这节微课为例,其脚本设计和教学过程分别如表3和表4所示。

经过上述过程的设计、录制、剪辑与包装后,微课已初具雏形,经过教师同行、学生观看评价后,在讨论交流中发现问题,解决问题,修改后将资源组合后上传到网络学习平台,供学习者课余时间学习使用。

4《数据结构》微课程教学效果

教师利用学习博客及QQ群将学习材料(微课视频、课件、大纲、Flash积件等)共享给学生自学,通过作业、答疑、讨论等各种辅助学习活动启发学习者思维,加深理解,解决知识难点。微博、QQ群聊天及短信等交流平台的使用,使师生、生生关系日益融洽,学生的学习变得积极、温馨和人性化。

经过两个学期的课堂实践,微课程既实现了传统教学的有益补充,又开辟了学生自主学习的新场所。相对于传统教学,学生对于一些课堂理解不够深入的内容得到了重新学习的机会,上机实践也可以通过相关微课程提前学习,能有的放矢地进行程序设计,编程水平有所提高,学习效果有了较大改善。

5 结语

综上所述,对于《数据结构》课程教学而言,微课程的引入必将革新传统的教学与教研方式,突破教师传统的听评课模式。对于学生而言,微课程的应用实现了线上资源与线下活动的连续统一,是一种真正以学习者为中心的课堂结构,能更好地实现因材施教,按需学习。随着移动互联网的迅猛发展,在未来教育中,基于微课程的移动学习、泛在学习将得到更好的普及推广。

摘要:微课程是具有泛在性、可视性、关联性等特点的一种新型学习资源,它给信息技术和课程教学的深度融合带来了新的挑战。在深入理解微课程内涵及应用的基础上,结合计算机专业核心课程《数据结构》的教学要求,就相关知识点进行微课程设计,以促进该课程教学改革。

关键词:微课程,数据结构,教学模式

参考文献

[1]杨厚群.数据结构(C语言描述)[M].上海:上海交通大学出版社,2013.

[2]梁乐明,曹俏俏,张宝辉.微课程设计模式研究---基于国内外微课程的对比分析[J].开放教育研究,2013(1):65-73.

[3]李汾娟.基于微课程的“三维建模技术应用”教学设计[J].武汉职业学院学报,2016(3):67-70

[4]刘名卓,祝智庭.微课程的设计分析与模型构建[J].中国电化教育,2013(12):127-131.

[5]余胜泉,陈敏.基于学习元平台的微课设计[J].开放教育研究,2014(1):100-110.

[6]李真.运用人本主义学习理论进行教育技术学专业实验教学改革的探索[J].中国成人教育,2009(14):98-99

数据结构课程简介 篇3

关键词:数据结构;数据类型;存储结构;算法

0引言

《数据结构》是计算机科学与技术专业最为重要的专业基础课程。它以《程序设计基础》、《离散数学》为先修课程,这两门课程学习效果的好坏直接影响到《数据结构》课程的学习质量。特别是《程序设计基础》,在该课程中,结构体、指针、以及结构体指针类型的声明、使用是教学的难点,一般不作为教学重点,只要求学生了解、不需熟练掌握,但恰好这些内容是《数据结构》的基础,直接影响到了本课程的学习。

基础知识不牢固,再加上《数据结构》本身内容抽象有一定难度,学生普遍反映该课程“难懂、难做、难用”。针对这个问题,本文从课程的特点、教学方法、学习方法入手,进行了教与学的分析和探讨。

1数据类型定义(存储结构表示)

在《数据结构》中,大量地使用了自定义数据类型,且是其简化形式,学生理解有相当的难度。

数据类型的定义不但体现了元素间的逻辑关系、物理关系,也体现了概念的准确性、完整性、严谨性。譬如:

线性表的定义是“由n个元素组成的有限序列”。短短的几个字,但体现了两个方面的含义:n个元素(有限),序列。

1.1线性表的顺序存储结构

线性表的顺序存储结构,包含静态存储和动态存储。

数据结构课程设计要求 篇4

本光盘有8个目录,对应于课程设计教材中第2至5章的8个案例。每个目录以ch0x0y命名,代表第x章第y节的案例,内容包含该案例的源程序及教材中描述的测试数据。除“文件目录结构的显示”案例为.C++源程序外,其他均为C源程序。

各目录中的内容及说明:

1.ch0201:表达式求值,在VC++6.0环境下测试通过

 文件main.c:案例源程序;

 文件input.txt:案例测试输入数据文件;

 文件output.txt:案例测试输出结果文件;

2.ch0202:文件目录结构的显示,在VC++6.0环境下测试通过

 文件main.c:案例源程序;

 文件input.txt:案例测试输入数据文件;

 文件bad_input_cases.txt:案例容错测试输入数据文件;

 文件output.txt:案例测试输入input.txt的输出结果文件;

3.ch0301:拯救007,在VC++6.0环境下测试通过

 文件main.c、graph.c、deque.c、error.c、graph.h、deque.h、error.h:案例源程序。编译时需通过应用工程文件(console project)。

 文件input.txt:案例测试输入数据文件;

 文件output.txt:案例测试输出结果文件;

4.ch0302:迷宫问题,在TC2.0环境下测试通过

 文件main.c:案例源程序;

 说明:测试时可选择自动生成测试数据,读者也可按照教材中提供的数据进行测试;

5.ch0401:快速排序详析,在VC++6.0环境下测试通过

 文件main.c:案例源程序;

 文件input.txt:案例测试输入数据文件,包含顺序、逆序和随机等三种类型的测试数据;

 文件output.txt:案例测试输出结果文件;

6.ch0402:插队买票,在VC++6.0环境下测试通过

 文件main.c:案例源程序;

 文件input.txt:案例测试输入数据文件;

 文件output.txt:案例测试输出结果文件;

7.ch0501:搜索算法效率比较,在VC++6.0环境下测试通过

 文件main.c:案例源程序;

 说明:读者可按照教材中提供的数据进行测试;

8.ch0502:任务调度问题,在VC++6.0环境下测试通过

 文件main.c:案例源程序;

数据结构课程教学大纲 篇5

一、课程基本概况

课程名称:数据结构

课程名称(英文): Data Structures

课程编号:B09042

课程总学时:60(其中,讲课48,实验12)

课程学分:3

课程分类:专业选修课

开设学期:4

适用专业:计算机网络工程本科

先修课程:集合论,图论,高级语言(结构或记录,指针)

后续课程:数据库,编译原理,操作系统等

二、课程的性质、目的和任务

数据结构是计算机专业的一门核心专业课程,是软件课程中非常重要的一门课程,在整个专业教学中占有十分重要的地位,是一门理论性非常强的课程。通过课堂教学、课外练习和上机实习,使学生了解数据对象的特性,数据组织的基本方法,并初步具备分析和解决现实世界问题在计算机中如何表示和处理的能力以及培养良好的程序设计技能,为后续课程的学习和科研工作的参与打下良好的基础。

三、主要内容、重点及深度

本门课程共60学时,其中理论教学48学时,实验教学12学时。其中,理论教学部分:

第一章

绪论

(一)目的要求

了解数据结构的意义与发展过程、数据结构在计算机科学中的作用、学习本课程的目的、任务及要求。理解数据结构的基本概念;算法设计;掌握算法的时间和空间复杂度。

(二)教学内容 本章知识点:

1.相关的基本概念(掌握);

2.算法五大要素(掌握);

3.计算语句频度和估算算法时间复杂度的方法(掌握)。

(三)重点与难点

重点:数据结构的定义;算法的描述方法。

难点:数据结构的定义;算法与程序的区别;时间复杂度及其计算。

第二章

线性表

(一)目的要求

掌握线性表的逻辑结构;线性表的存储结构及操作的实现;理解一元多项式的表示;

(二)教学内容 本章知识点:

1.线性表的逻辑结构(掌握);2.线性表的存储结构(掌握);

3.线性表在顺序结构和链式结构上实现基本操作的方法(掌握);

4.从时间和空间复杂度的角度比较线性表两种存储结构的不同特点及其适用场合(掌握)。

(三)重点与难点

重点:线性表的概念;线性表的顺序存储结构、链式存储结构及其常用算法。难点:链式存储结构及其常用算法;双向循环链表。

第三章 栈和队列

(一)目的要求

掌握栈的定义,表示及实现;表达式求值;栈与递归过程;队列的定义、表示及实现。

(二)教学内容 本章知识点: 1.栈和队列的特点(掌握);

2.在两种存储结构上栈的基本操作的实现(掌握); 3.循环队列和链队列的基本运算(熟练掌握); 4.递归算法执行过程中栈状态的变化过程(掌握)。

(三)重点与难点

重点:堆栈和队列的概念;递归的定义;循环队列和链队列的基本运算。难点:递归的编程实现;循环队列和链队列的基本运算。

第四章 串

(一)目的要求

了解串的逻辑结构,存储结构;掌握串操作的实现(重点难点BF和KMP算法)串的应用。

(二)教学内容 本章知识点:

1.串的七种基本运算的定义(了解);

2.利用这些基本运算来实现串的其它各种运算的方法(掌握); 3.在顺序存储结构上实现串的各种操作的方法(掌握);

4.KMP算法,熟悉NEXT函数和改进NEXT函数的定义和计算(掌握); 5.串名的存储映象和在堆存储结构实现串操作的方法(理解)。

(三)重点与难点 重点:串定义和存储方法;串的操作 难点:串操作实现方法

第五章 数组和广义表

(一)目的要求

掌握数组的存储结构;稀疏矩阵的表示及操作的实现;广义表的定义和存储结构;广义表的递归算法。

(二)教学内容 本章知识点:1.数组在以行为主的存储结构中的地址计算方法(掌握); 2.矩阵实现压缩存储时的下标变换(掌握);

3.理解稀疏矩阵的两种存储方式的特点和适用范围,领会以三元组表示稀疏矩阵时进行运算采用的处理方法(掌握);

4.广义表的定义及其存储结构,学会广义表的表头,表尾分析方法(掌握); 5.学习编制广义表的递归算法(掌握)。

(三)重点与难点

重点:多维数组元素存储地址的计算;稀疏矩阵的三元组表示;广义表的存储定义、操作。难点:稀疏矩阵的三元组表示;广义表的存储定义、操作。

第六章 树和二叉树

(一)目的要求

了解树的基本概念;理解二叉树的性质和存储结构;遍历二叉树和线索二叉树;理解树的存储结构和遍历;集合的一种表示方法;掌握哈夫曼树及其应用;

(二)教学内容 本章知识点: 1.二叉树的结构特点(理解);

2.二叉树的各种存储结构的特点及适用范围(掌握); 3.按各种次序遍历二叉树的递归和非递归算法(掌握);

4.二叉树的线索化,在中序线索树上找给定结点的前驱和后继的方法(掌握); 5.树的各种存储结构及其特点(掌握); 6.编写树的各种运算的算法(掌握);

7.建立最优二叉树和哈夫曼编码的方法(掌握)。

(三)重点与难点 重点:二叉树的概念、性质;二叉树的遍历方式;构造二叉排序树。难点:二叉树的遍历方式;二叉排序树的构造方法;二叉树的线索化。

第七章 图

(一)目的要求

理解图的基本概念;图的存储结构;掌握图的遍历及应用{最小生成树,最短路径等};拓扑排序和关键路径。

(二)教学内容 本章知识点: 1.熟悉图的各种存储结构;

2.了解实际问题与采用何种存储结构和算法有密切联系(掌握); 3.遍历图的递归和非递归算法(掌握);

4.应用图的遍历算法求各种简单路径问题(比如,最小生成树、最短路径、拓扑排序、关键路径等)(掌握)。

(三)重点与难点

重点:图的存储结构;图的遍历 难点:图遍历的算法;

第八章

动态存储管理

(一)目的要求

了解边界标识法和伙伴系统;无用单元收集和紧缩;

(二)教学内容 本章知识点:

1.存储器分配策略和算法(了解);

2.无用单元收集时的标志算法(了解)。

(三)重点与难点

存储器分配策略和算法、无用单元收集时的标志算法

第九章

查找

(一)目的要求

了解静态查找表(顺序表,有序表,索引顺序表);动态查找表(二叉排序树,平衡二叉树,B-树和B+树)的建立和查找;掌握哈希表的建立,查找及分析;

(二)教学内容 本章知识点:

1.顺序查找、折半查找和索引查找的方法、应用(掌握);

2.二叉排序树的构造方法(掌握);

3.二叉平衡树的建立方法(掌握);

4.B-树,B+树和键树的特点以及它们的建立过程(理解);

5.哈希表的构造方法(掌握);

6.按定义计算各种查找方法在等概率情况下查找成功时和失败时的平均查找长度;

7.哈希表在查找不成功时的平均查找长度的计算方法(掌握)。

(三)重点与难点

重点:二叉排序树的构造方法、二叉平衡树的建立方法;哈希表的构造、应用;

难点:二叉排序树的构造及应用;哈希表的构造方法;查找的平均长度。

第十章

内部排序

(一)目的要求

掌握插入排序、交换排序(起泡排序,快速排序)、选择排序(简单选择,树形选择,堆)、归并排序、基数排序等算法。

(二)教学内容 本章知识点:

1.各种排序方法的特点并能灵活应用(掌握); 2.各种方法的排序过程(掌握);

3.各种排序方法的时间复杂度分析(掌握)。

(三)重点与难点

重点:各种排序方法的特点及其应用;实现排序的各种算法。难点:各种排序算法的时间复杂度分析。

十一章

外部排序

(一)目的要求

理解外部排序的基本方法;掌握败者树和多路平衡归并的实现;置换--选择排序;最佳归并树。

(二)教学内容 本章知识点:

1.外部排序的两个过程(理解);

2.外排过程中所需进行外存读/写次数的计算方法(掌握);

3.败者树的建立过程(掌握);

4.实现多路归并的算法(掌握);

5.置换-选择排序的过程(掌握);

6.最佳归并树的构造方法(熟悉);

7.按最佳归并树的归并方案进行平衡归并时,外存读/写次数的计算方法(掌握)。

(三)重点与难点

重点:外部排序过程和实现方法;多路并归算法及其实现; 难点:最佳并归树的构造方法及其应用。

实践教学部分:上机实验分4个专题,每个专题可提供2~4个难度不等的题目供选。

实验一

停车场管理系统

(一)实验内容 以栈模拟车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表结构实现。

(二)实验过程 编程实现实验内容。

(三)实验教学基本要求

通过实例,使学生掌握栈和队列两种特殊的线性结构,掌握栈和队列的特点。实验后学生提交实验报告。

(四)实验设备和材料 计算机。

(五)实验学时 4学时

实验二

教学计划编制问题

(一)实验内容

假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。编制一个教学计划程序。

(二)实验过程编程实现实验内容。

(三)实验教学基本要求

通过实例,使学生熟悉图的各种存储结构的特性,掌握如何应用图结构解决具体问题。实验后学生提交实验报告。

(四)实验设备和材料 计算机。

(五)实验学时 2学时

实验三

最小生成树问题

(一)实验内容

利用克鲁斯卡尔算法求最小生成树。以文本形式输出树中各条边以及他们的权值。

(二)实验过程 编程实现实验内容

(三)实验教学基本要求

通过实例,使学生熟悉图的各种存储结构的特性,掌握如何应用图结构解决具体问题。实验后学生提交实验报告。

(四)实验设备和材料 计算机。

(五)实验学时 2学时

实验四

哈希表设计

(一)实验内容

假设人名为中国人的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突。

(二)实验过程 编程实现实验内容

(三)实验教学基本要求 掌握索引技术的使用。

(四)实验设备和材料 计算机

(五)实验学时 4学时

五、课程教学的基本要求和主要环节

本课程可采用课堂讲授、课堂讨论、习题课等进行课堂教学;条件允许可采用CAI、电子教案、幻灯片、参观等进行辅助教学;每章布置3~6道习题以巩固教学;在课程后半程,安排3~4个上机实验,让学生应用数据结构的理论、方法,分组设计几个较大的软件,使理论与实际相结合。

考试采用闭卷方式。总成绩由平时成绩和考试成绩组成。平时成绩占30%,考试成绩占70%。

六、本课程与其它课程的联系与分工

先修课包括:集合论,图论,高级语言(结构或记录,指针);

后续课包括:数据库,编译原理,操作系统等。

七、建议教材与参考教材

《数据结构》(C语言版)

严蔚敏等

清华大学出版社

1997 《数据结构题集》

严蔚敏等

清华大学出版社

1999

《数据结构习题与解析》

李春葆

清华大学出版社

2004

八、负责人

撰稿人:刘景汇、李玉香

审稿人:

数据结构课程设计 飞机订票系统 篇6

1.需求分析

描述要求编程解决的问题。以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:

(a)输入的形式和输入值的范围;

(b)输出的形式;

(c)程序所能达到的功能;

(d)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

2.概要设计

给出程序要达到的具体的要求。描述解决相应问题算法的设计思想。描述所设计程序的各个模块(即函数)功能。说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

3.详细设计

实现概要设计中定义的所有数据类型,对每个操作只需要写出流程或伪码算法;对主程序和其他模块也都需要写出流程或伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。设计出良好的输入输出界面(清晰易懂)。

4.调试分析 内容包括:

(a)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;

(b)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;

(c)经验和体会等。

5.用户使用说明

说明如何使用你编写的程序,详细列出每一步的操作步骤。

6.测试结果

设计测试数据,或具体给出测试数据。要求测试数据能全面地测试所设计程序的功能。列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。

7.测试情况:给出程序的测试情况,并分析运行结果

附录(非必须,按照需要添加)

带注释的源程序。可以只列出程序文件名的清单。

需求分析

任务:通过此系统可以实现如下功能: 录入:

可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

查询:

可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况;

订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;

退票: 可退票,退票后修改相关数据文件;

客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

概要设计

详细设计

详列函数 void list(){

struct airline *info;

int i=0;

info=start;

printf(“起点城市t终点城市t航班号t起飞时间t降落时间t总票数t余票数n”);

while(i

{

display(info);

info++;

i++;

}

printf(“nn”);}

查询函数 void search(){

struct airline *info,*find();

char qiname[10];

char jiangname[10];

int i=0;

info=start;

printf(“请输入要起飞城市的名称:”);

scanf(“%s”,qiname);

printf(“请输入要抵达城市的名称:”);

scanf(“%s”,jiangname);

while(i

{

if(!strcmp(jiangname,info->jiang_name))

{

break;

}

info++;

i++;

}

if(i>=MAXSIZE)

{

printf(“没有这条航线!n”);

}

else

{

printf(“起飞城市t降落城市t航班号t起飞时间t降落时间t总票数t余票数n”);

display(info);

} }

struct airline *find(){

struct airline *info;

char number[10];

int i=0;

info=start;

printf(“请输入航班号:”);

scanf(“%s”,number);

while(i

{

if(!strcmp(number,info->air_num))

{

return info;

}

info++;

i++;

}

printf(“没有这条航线!n”);

return NULL;}

订票函数 void order(){

struct airline *info;

char qiname[10];

char jiangname[10];

int amount;

char name[10];

char id[30];

info=start;

printf(“请输入您的起飞城市:”);

scanf(“%s”,qiname);

printf(“请输入您的降落城市:”);

scanf(“%s”,jiangname);

printf(“请输入您需要的票数:”);

scanf(“%d”,&amount);

int i=1;

while(i<5)

{

if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))

{

if(amount<=info->ticket_left)

{

int i;

printf(“请输入您的姓名:”);

scanf(“%s”,name);

printf(“请输入您的身份证号:”);

scanf(“%s”,id);

info->order=insertlink(info->order,amount,name,id);

printf(“您的航班信息为:n”);

display(info);

for(i=0;i

{

printf(“%s的座位号是:%dn”,name,info->ticket_all-info->ticket_left+i+1);

}

info->ticket_left-=amount;

printf(“订票成功!n”);

break;

}

else

{

info++;

i++;

}

}

else

{

info++;

i++;

}

} }

退票函数

void returnticket(){

struct airline *info;

linklist *p1,*p2,*head;

char name[10];

if(!(info=find()))

{

return;

}

head=info->order;

p1=head;

printf(“请输入您的姓名:”);

scanf(“%s”,name);

while(p1!=NULL)

{

if(!strcmp(name,p1->name))

{

break;

}

p2=p1;

p1=p1->next;

}

if(p1==NULL)

{

printf(“您没有订过票!n”);

return;

}

else

{

if(p1==head)

{

head=p1->next;

}

else

{

p2->next=p1->next;

}

info->ticket_left+=p1->tickets;

printf(“%s退票成功!n”,p1->name);

free(p1);

}

info->order=head;}

存储结构

typedef struct passenger {

char name[10];

int tickets;

char id[30];

struct passenger *next;} linklist;typedef struct airline {

char qi_name[10];

char jiang_name[10];

char air_num[10];

char qi_time[10];

char jiang_time[10];

int ticket_all;

int ticket_left;

linklist *order;} lineinfo;调试分析

查看航线信息

查询航线 ① 输入起飞城市 ② 输入抵达城市 ③ 输出航班信息

办理订票业务 ① 查询符合的航班 ② 查询余票量 ③ 输出航班信息

办理退票业务

源代码

#include #include #include #include #include #include using namespace std;#define MAXSIZE 5 typedef struct passenger {

char name[10];

int tickets;

char id[30];

struct passenger *next;} linklist;

typedef struct airline {

char qi_name[10];

char jiang_name[10];

char air_num[10];

char qi_time[10];

char jiang_time[10];

int ticket_all;

int ticket_left;

linklist *order;} lineinfo;

struct airline *start;

void display(struct airline *info){ printf(“%st %10st %10st %10st %10st %5dt %5dn”,info->qi_name,info->jiang_name,info->air_num,info->qi_time,info->jiang_time,info->ticket_all,info->ticket_left);} void list(){

struct airline *info;

int i=0;

info=start;

printf(“起点城市t终点城市t航班号t起飞时间t降落时间t总票数t余票数n”);

while(i

{

display(info);

info++;

i++;

}

printf(“nn”);}

void search(){

struct airline *info,*find();

char qiname[10];

char jiangname[10];

int i=0;

info=start;

printf(“请输入要起飞城市的名称:”);

scanf(“%s”,qiname);

printf(“请输入要抵达城市的名称:”);

scanf(“%s”,jiangname);

while(i

{

if(!strcmp(jiangname,info->jiang_name))

{

break;

}

info++;

i++;

}

if(i>=MAXSIZE)

{

printf(“没有这条航线!n”);

}

else

{

printf(“起飞城市t降落城市t航班号t起飞时间t降落时间t总票数t余票数n”);

display(info);

} } struct airline *find(){

struct airline *info;

char number[10];

int i=0;

info=start;

printf(“请输入航班号:”);

scanf(“%s”,number);

while(i

{

if(!strcmp(number,info->air_num))

{

return info;

}

info++;

i++;

}

printf(“没有这条航线!n”);

return NULL;}

linklist *insertlink(linklist *head,int amount,char name[],char id[]){

linklist *p1,*new1;

p1=head;

new1=(linklist*)malloc(sizeof(linklist));

strcpy(new1->name,name);

new1->tickets=amount;

new1->next=NULL;

strcpy(new1->id,id);

if(head==NULL)

{

head=new1;

new1->next=NULL;

}

else

{

while(p1->next!=NULL)

p1=p1->next;

p1->next=new1;

}

return head;}

void order(){

struct airline *info;

char qiname[10];

char jiangname[10];

int amount;

char name[10];

char id[30];

info=start;

printf(“请输入您的起飞城市:”);

scanf(“%s”,qiname);

printf(“请输入您的降落城市:”);

scanf(“%s”,jiangname);

printf(“请输入您需要的票数:”);

scanf(“%d”,&amount);

int i=1;

while(i<5)

{

if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))

{

if(amount<=info->ticket_left)

{

int i;

printf(“请输入您的姓名:”);

scanf(“%s”,name);

printf(“请输入您的身份证号:”);

scanf(“%s”,id);

info->order=insertlink(info->order,amount,name,id);

printf(“您的航班信息为:n”);

display(info);

for(i=0;i

{

printf(“%s的座位号是:%dn”,name,info->ticket_all-info->ticket_left+i+1);

}

info->ticket_left-=amount;

printf(“订票成功!n”);

break;

}

else

{

info++;

i++;

}

}

else

{

info++;

i++;

}

} }

void returnticket(){

struct airline *info;

linklist *p1,*p2,*head;

char name[10];

if(!(info=find()))

{

return;

}

head=info->order;

p1=head;

printf(“请输入您的姓名:”);

scanf(“%s”,name);

while(p1!=NULL)

{

if(!strcmp(name,p1->name))

{

break;

}

p2=p1;

p1=p1->next;

}

if(p1==NULL)

{

printf(“您没有订过票!n”);

return;

}

else

{

if(p1==head)

{

head=p1->next;

}

else

{

p2->next=p1->next;

}

info->ticket_left+=p1->tickets;

printf(“%s退票成功!n”,p1->name);

free(p1);

}

info->order=head;}

int menu_select(){

int c;

char s[20];

printf(“

订票系统n”);

printf(“-------------n”);

printf(“

1.查看航线信息

printf(”

2.查询航线

printf(“

3.办理订票业务

printf(”

4.办理退票业务

printf(“

5.退出系统

printf(”-------------n“);

do

{

printf(”请选择(1-5):“);

scanf(”%s“,s);

c=atoi(s);

}

while(c<1||c>6);

return c;

n”);n“);n”);n“);

n”);

}

int main(){

struct airline air[MAXSIZE]=

{

{“harbin”,“beijing”,“1”,“12:00”,“14:00”,30,30},{“harbin”,“shanghai”,“2”,“10:00”,“13:00”,20,20},{“harbin”,“beijing”,“3”,“13:30”,“10:00”,50,50},{“harbin”,“guangzhou”,“4”,“17:00”,“21:00”,50,50},{“harbin”,“dalian”,“5”,“14:00”,“17:00”,40,40}

};

start=air;

while(1)

{

system(“cls”);

switch(menu_select())

{

case 1:

list();

break;

case 2:

search();

break;

case 3:

order();

break;

case 4:

returnticket();

break;

case 5:

exit(0);

}

getch();

} }

经验体会

1、通过设计飞机订票系统,加深了对链表的运用和理解。

高职院校数据结构课程教学探析 篇7

数据结构课程是计算机及其相关学科的一门专业基础课, 是重要的专业核心课程。一般用计算机来解决一个具体问题时, 首先要从具体问题抽象出一个适当的数学模型, 然后设计一个解此数学模型的算法, 最后编出程序并测试调整直至将问题解答。寻求数学模型的实质是分析问题, 从中提取操作的对象, 并找出这些操作对象之间含有的关系。数据结构就是研究程序设计问题中计算机的操作对象以及它们之间的关系和操作的一门学科。所有的计算机程序设计问题都要用到各种类型的数据结构。要使用计算机更好的解决实际问题, 除了掌握计算机程序设计语言, 还必须掌握数据结构的相关知识。学好数据结构课程, 对于操作系统、软件工程、编译原理、数据库系统等计算机专业后续课程的学习, 都十分有益。

二、高职院校学生学习特点

目前, 我国职业教育具有两种不同层次的教育体系和框架, 即中等职业教育和高等职业教育。其中, 中等职业教育的定位是在九年义务教育的基础上培养高素质劳动者, 而高等职业教育则是在高中阶段教育的基础上培养高技能人才。要提高高职院校的教育教学质量, 必须根据高职学生的学习特点采用合适的教学方法。主要从以下几方面总结一下高职学生的学习特点:

1) 学习目的具有多样性。高职院校的学生学习目的具有多样性, 有的是为了学有所成, 将来能够顺利就业;有的是高考失利, 还想继续求学;还有的是学习成绩不理想, 别无出路, 暂时在职业院校学习。其中, 大部分学生是为了将来解决就业问题, 能够走出校门马上就可以进入企业工作, 所以他们比较重视专业技能课, 即与实际工作联系比较密切的课程的学习, 但对于基础课和理论课学习的积极性不高。

2) 比较接受实习性的教学方式。学生的学习目的决定了他们重视动手能力的培养, 同时希望积极参与每一项实际操作, 以便能够更好的就业。

3) 积极参与各种证件的考取。高职院校学生毕业后的学历水平相对不高, 为了能够更加顺利的就业, 他们必须持有更多的资格证书, 而英语等级证书、计算机等级证书是最基本的而且必需的证书。

4) 入学成绩较低, 学习积极性不高。高职院校学生的入学成绩相对较低, 知识基础相对较差, 偏科现象也比较严重, 而且缺乏上进心和求知欲, 学习积极性和主动性比较低。

因此, 高等职业教育存在的问题比较多, 一方面社会对高职院校的毕业生提出了更高的职业素质要求, 另一方面高职院校的学生普遍缺乏学习的积极性。解决这一矛盾, 高职院校教学活动的组织与实施必须充分考虑到学生的特点, 树立因材施教的指导思想。

三、数据结构课程教学探讨

数据结构课程理论性强, 内容抽象、枯燥, 再加上高职学生本身知识基础较差, 学习起来自然难度较大, 学习兴趣较低。因此, 教学过程中必须结合学生实际情况, 对数据结构课程的教学内容以及教学方式作适当的调整。

在进行数据结构课程教学之前, 必须将数据结构课程与其它相关课程作为一个有机整体进行安排, 充分考虑好与其它课程的衔接问题, 比如与程序设计语言课程的衔接。大多数高职院校的第一门程序设计语言学习的是C语言, 一般安排在数据结构课程的上一个学期开设。由于学生刚开始接触程序设计语言, 程序设计方面的思维还没有完全建立, 而且数据结构课程中较多用到数组、指针、函数、结构体等这些相对较难掌握的C语言知识, 所以学生要学好数据结构, C语言程序设计的掌握起到很关键的作用。在数据结构课程开课的第一二周, 可以对学生的C语言知识先加以补充巩固, 尤其是数组、指针、函数、结构体等方面的内容, 而且在数据结构教学过程中也要不断地回顾复习, 这样既可以复习以前的知识, 加深印象, 强化理解, 又可以为数据结构课程的教学做好铺垫, 更好的进行数据结构课程的实践环节, 否则学生不能对理论知识通过程序加以验证, 所学到的数据结构知识也只能成为空架子、空理论, 会使理论知识更加的乏味, 给学生造成厌烦的学习情绪。

在数据结构课程教学内容的安排上, 要注意难易程度的把握。高职院校的学生入学前的基础知识掌握程度相对较差, 数学思维相对薄弱, 而数据结构课程的教学内容, 很大一部分需要数学的思想来理解。如果内容讲解的不够浅显, 给学生造成很大程度理解的困难, 也会使学生产生厌烦的学习情绪。数据结构课程的内容主要包括线性表、栈、队列、数组、串、树、图等这几种数据结构的逻辑结构特点和存储结构实现, 教学安排可以如下:1) 线性表是最简单最基础的数据结构, 是其它数据结构的基础, 一般安排在第一章, 内容虽然不多, 但却是学生接触的第一种数据结构, 需要学生慢慢接受数据结构的思想。这部分内容的课时安排可以适当多一些, 教学进度慢一些, 并且这一章的实践环节也要学生多多参与, 为后面几种数据结构的学习打好基础。2) 栈和队列这两种数据结构是线性表的延伸, 是特殊的线性表。在线性表学习的基础上, 学生主要理解这两种数据结构的特性及存储, 但对于其应用理解难度较大, 可适当减少。3) 数组和串这两种数据结构, 学生在学习程序设计语言时都有所接触, 理解相对容易, 这部分内容的课时安排可以适当的减少。4) 树和图这两种数据结构, 内容较多较复杂, 学生理解相对困难, 而且这两种数据结构对专业体系中的后续课程的学习有一定的影响。这部分内容是学生学习的难点, 要适当增加课时安排, 以便给学生更多的时间消化理解知识内容。

高职院校学生的程序设计能力普遍不高, 所以对每种数据结构的实践环节的安排, 难度不宜太高, 数量也不宜太多, 争取学生可以做一个懂一个。对于理论知识部分, 也要安排适当数量和难度的练习题, 以便学生可以更好的理解理论知识, 增加学习的兴趣。

四、结语

数据结构课程是计算机及其相关学科的专业核心课程, 而且理论性强, 内容枯燥。高职院校的学生知识基础较差, 对理论性较强的课程学习兴趣不高。必须适当调整数据结构课程的教学内容和教学方式, 因材施教, 更好的引导学生学习计算机专业知识, 培养学生的职业素养, 为今后能够顺利就业打下良好的基础。

摘要:数据结构课程是计算机及其相关学科的专业核心课程, 在专业体系的学习中, 起到承前启后的作用。高职院校的学生学习有其自身的特点, 根据其特点, 因材施教, 以摆脱学生对数据结构课程的厌烦情绪, 使其教学活动可以更好的开展, 为学生学好专业体系中的后续课程打好基础。

关键词:数据结构,高职,教学,学习

参考文献

[1]严蔚敏, 吴伟民.数据结构 (C语言版) [M].北京:清华大学出版社, 1997.

[2]李静.高等职业院校学生学习特点的调查及教学改革初探[J].计算机教育, 2008.

数据结构课程简介 篇8

【关键词】数据结构;教学方法;教学改革;实践教学

一、传统的《数据结构》教学方法中存在的问题

1.学习目标不明确,缺乏学习兴趣

《数据结构》是计算机专业的专业基础课程,本课程传统的教学方法偏重理论知识的全面学习,注重教学内容的理论性和系统性。课程内容较抽象,学生不易理解,学习难度大;学生即使掌握了理论知识,却不理解这些知识如何应用,只是理论知识的堆砌,无法调动学生的学习兴趣和学习主动性。

2.学生基础薄弱

《数据结构》需以《C语言程序设计》为先导课程,高职学生利用程序设计语言解决问题的能力相对较弱,学生对利用数组、指针和结构体编写程序感觉吃力,加上采用顺序存储结构和链式存储结构对同一操作实现思路完全不同,学习难度大。

3.知识点多,课时紧张

《数据结构》在高职院校非软件技术专业大约64个学时,软件技术专业大约是96个学时,重点讲解三大类逻辑结构(线性结构、树形结构和图形结构)和两种操作(查找和排序),一般采用“逻辑结构”—“存储结构”—“算法实现”、“算法思路”—“算法实现”—“算法分析比较”的流程讲解,教学内容多且抽象,程序实现和算法分析复杂,老师授课时间紧张,学生掌握情况不好,更谈不上学以致用。

二、课程教学改革

按照职业岗位和职业能力的培养要求,采用“理论、实践、应用一体化”的教学模式,结合上机实践环节,以培养包括“计算机思维能力、动手操作能力、自主学习能力和钻研创新能力”在内的各项职业能力为主线进行课程设计,注重在高职院校的专业基础课教学中体现出实践性,并制定了《数据结构》的课程标准。

1.教学内容与方法

针对教学内容繁多,教学课时紧张,理清教学内容的基本脉络,适当取舍知识点,有的放矢,学以致用。首先将讲授内容针对专业进行精简,以下以非软件技术专业为例进行说明,该课程分为六大知识模块:基础知识、线性结构、树形结构、图形结构、查找技术和排序技术;每个知识模块从实际问题出发,从常识性思考开始,导出各类典型数据结构的逻辑特点、存储结构和主要操作,以此为主线,采用问题驱动式教学方法,“教师提问、学生讨论、教师讲解、学生跟练”的形式展开教学。

将“传递-接受”的传统模式转变为以解决问题、完成任务为主的互动模式,按照“提出实际问题→设计算法解決问题→分析算法效率”的路线授课,采用理论-能力-应用一体化的教学模式。

2.上机实践项目

同时选取典型算法上机实现,共安排了7个上机实践项目,分别是熟悉程序运行环境并回顾C语言基本知识、顺序表、单链表、栈的应用---进制转换、队列的应用—输出字符串、二叉树叶子结点的计算、二分查找。实验内容贴近现实,学生易于理解,实验题目多样化,提高学生学习兴趣;旨在使学生在做中学,在学中做,体会利用数据结构解决问题的方法和思想,学以致用。

高职非软件技术专业学生在对C语言的运用和对程序设计的抽象思维能力上,与软件技术专业学生有差距,设计课程思路的不同点体现在:

(1)在原课程体系基础上增加课程衔接度,把数据结构课程学习中用到的C语言的知识点适时回顾讲解,解决基础不到位的问题。例如在线性结构中讲解第一部分顺序表,定义顺序表的数据类型,在VC++环境中,让学生看清楚结构体是如何定义,定义的数据类型是如何使用的。

#define MaxSize 10

typedef char DataType;

typedef struct{

DataType data[MaxSize];

int last;

}SeqList;

再比如学生对链式存储结构理解起来困难,特别是指针的指向赋值语句和顺序,更是难点。可以利用ppt动态演示插入或者删除数据元素的过程,逐步写出基本的操作语句,学生掌握基本操作语句以后,再讲解完整的算法,提高学生的学习自信和主动性。

(2)受教学课时的限制,教学内容不求面面俱到,但求重点突出,尽量降低难度,避免学生产生畏难情绪。比如线性结构内容相对简单,较好理解,在这个模块中我们夯实基础,让学生彻底理解“操作的实现依赖于采用的存储结构”。

如顺序表的上机实践课难度由浅到深,基础题目如下:编写算法实现,建立一个顺序表,包含a、b、c、d、e 5个元素;在第4个位置上插入元素f后,再删除该顺序表的第3个元素;进阶题目如下:已知:4个小朋友已按身高递增的顺序站好,一个新成员要加入,应站在哪个位置才能保持队形整齐。引导学生思考提高算法性能的解决方法,给出“边比较边后移”的解决思路,让学生体会利用数据结构解决实际问题并进行效率分析。

对于树形结构和图形结构,难度较大,在讲解上我们侧重问题的解决方法,上机实践时我们可以选择程序填空,或者是在现有程序的基础上修改以实现其他功能。如已知以下程序实现的功能是:建立二叉树的二叉链表存储,并对其进行后序遍历。要求:在前面程序的基础上,计算叶子结点数目。这种上机实践方法既锻炼了学生的阅读程序能力,也锻炼了学生思考解决问题的能力,避免学生产生畏难情绪,提高学习自信。

三、结束语

《数据结构》这门课程涉及到计算机硬件(特别是编码理论、存储和存取方法)的研究范围,也与计算机软件(特别是数据元素在存储器中的分配、组织、查找问题)的研究有密切关系,是一门既有系统的、完整的理论体系,也有可操作性的实践课程。通过课程的改革,在培养高职学生的逻辑思维、数据抽象能力、算法设计和分析能力方面有较好的效果。

参考文献

[1]张丽萍.计算机应用型人才与数据结构课程改革[J].计算机教育,2010(5).

[2]胡涛.以案例激发兴趣的高职数据结构课程改进探索[J].科教文汇,2014(6).

上一篇:生物科学概述下一篇:六年级人生感悟作文