促进数据结构教学的改革提高人才培养质量.docVIP

促进数据结构教学的改革提高人才培养质量.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
促进数据结构教学的改革提高人才培养质量

促进数据结构教学的改革提高人才培养质量   摘要:数据结构是计算机学科的核心基础课程。为提升数据结构课程教学质量,备课中应将数据结构静态教材内容完善为递进知识网络体系。对教学内容及过程进行分解剖析,讨论课堂教学设计的指导原则,并对教学手段的应用进行了探讨。   关键词:教学质量; 递进知识网络; 教学设计   【中图分类号】G640   一.数据结构课程性质   明晰数据结构的培养目标和地位,有利于指导设计教学实践体系及解决教学过程所遇到的问题。考查数据结构的课程目标和地位,首先要明确此课程所属专业对人才的培养期望。教育界对人才培养提出了包括素质教育、创新教育、应用型人才培养等一系列的提法,提法名称虽不同,但主要注重知识与能力两个方面。当然,这两个方面依据学龄、专业等侧重不同。对于大学教育中的计算机学科来说,数据结构课程的重要性一般是这样描述的:是计算机科学与技术专业的核心课程,是高级程序设计语言、编译原理、操作系统、数据库、人工智能等课程的基础,是专业人才培养体系的中的重要环节。是一门理论与工程实践密切相关的综合性课程,在计算机学科教学中具有十分重要的作用。   二、教学内容是递进知识网络体系   国内的数据结构课程广泛采用严蔚敏和吴伟民两位老师合写的清华版教材,与国外Mark Allen Weiss的影响较广的《Data Structures and Algorithm Analysis in C》内容相似。 我们基于严、吴两位老师的教材内容分析教学体系。数据结构教学内容共介绍了四种数据结构:集合、线性表(1对1关系)、二叉树(1对多关系)、图(多对多关系)[1],另外就是基于这些逻辑结构上的应用算法,查找和排序。重点介绍的三种数据结构(线性表、二叉树、图)由简单到复杂递进。数据结构教学内容不是线性表、树、图三种数据结构及算法的罗列,而是数据结构形式由简单到复杂的动态演化过程。在此体系中包括逻辑结构意义演化及算法演化两个子体系。任何知识点都处于联系之中。教师要通过深入的备课和研究才能明了算法(教材中以及拓展算法)之间的关联体系,明了算法底层意义上的联系。下面举例分析之。   遍历算法是数据结构算法基础。数据结构包含数据集和关系集,遍历通俗的讲,就是从某源点(数据元素)出发,依照关系拓展其他数据元素。对于当前元素来说,我们区分入口和出口。入口就是从某关系到达此元素,出口就是从当前元素出发依据某些关系能拓展到其他元素,当然我们更加注重那些能拓展到的且没被访问过的元素。   线性链表从逻辑意义上可分为两部分:当前结点和后继链表。递归算法如下   Void linklstTrv( linklist L){   If(L){   Visit(L); //访问L结点   linklstTrv(L-next); //拓展到后继结点继续遍历   }   }   对于单链表算法,每个结点只有一个出口。对于二叉树,相当于在单链表中增加了一个新出口而已,从t出发有两个拓展方向,且两个拓展顶点集只能通过该结点有路径相通。当然新出口拓展到的结点只有通过本结点。   二叉树的先序递归算法如下:   Void BiTreeTrv( BiTree t){   If(t){   Visit(t); //访问t结点   BiTreeTrv(t-lchild); //拓展后继结点1(左孩子)继续遍历   BiTreeTrv(t-rchild); //拓展后继结点2(右孩子)继续遍历   }   }   比较上面两个算法,多叉树的递归算法   Void BiTreeTrv( BiTree t){   If(t){   Visit(t); //访问t结点   For(q=firstchild(t); q; q=nextchild(t,q)) //拓展所有孩子结点   BiTreeTrv(q); //从当前孩子继续遍历   }   }   将上面算法进一步引申,如果从当前结点拓展时,各个拓展结点(孩子)之间有不通过当前结点的路径相通。此时从某个拓展结点出发遍历前,要首先判断当前拓展结点(孩子)是不是已经通过别的路径拓展访问过了。我们加上访问标记,上面算法就成了图的深度优先搜索算法。   Void DFSTrv(Graph g, int v){   Visit(v); visited[v]=true; //访问当前顶点,并加访问标记   For(w=firstadjvex(g,v); w; w=nextadjvex(g,v,w))   //拓展邻结点   If(!visited[w])DFSTrv(g,w);   }   以上遍历的本质就是访问完当前结点后,拓展其他结点的过程。只是有时拓

您可能关注的文档

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档