浅谈《数据结构》的学习方法
来源:用户上传
作者: 郭明杰 程秀贵 郑佳林
摘要:“数据结构”在计算机科学中是一门非常重要的综合性的专业基础课,其内容丰富,涉及面广泛,但却存在着难以将理论知识应用到实际的困境,很多人学完数据结构后,十分茫然,因此,我们有必要探讨一下,什么是数据结构,以及该如何学习数据结构。
关键词:数据结构;物理结构;算法
中图分类号:TP3-4 文献标识码:A 文章编号:1007-9599 (2011) 23-0000-01
Learning Methods of "Data Structure"
Guo Mingjie,Cheng Xiugui,Zheng Jialin
(Heilongjiang Mechanical and Electrical Engineering School,Suihua 152300,China)
Abstract:"Data Structure" in computer science is a very important comprehensive basic course,the content-rich,wide-ranging,but there it is difficult to apply theoretical knowledge to practical difficulties,a lot of people completing the data structure,the very loss,therefore,we need to explore,what is the data structure,data structure and how to learn.
Keywords:Data structure;Physical structure;Algorithm
《数据结构》作为一门独立的课程最早是1968年在美国的一些大学开设的;自1978年美籍华裔学者冀中田在国内首开这门课程以来,经过20余年的发展,在我国这门课程已经成为各大学计算机专业的本科主干课程,也成为非计算机类学生和研究生学习计算机的必修课程。
数据结构在计算机科学界至今没有标准的定义。每个人根据各自的理解的不同而有不同的表述方法:
Sartaj Sahni在他的《数据结构、算法与应用》一书中将将数据对象(data object)定义为“一个数据对象是实例或值的集合”。而Clifford A.Shaffer在《数据结构与算法分析》一书中将数据结构定义为:“数据结构是ADT的物理实现。”
大多数学者认为数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。
众所周知,计算机的程序是对信息进行加工处理。在大多数情况下,这些信息并不是没有组织,信息之间往往具有重要的结构关系,这就是数据结构的内容。数据的结构,直接影响算法的选择和效率。数学算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。
因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付当前众多的复杂的课题。要想有效的使用计算机,充分发挥计算机的性能,就必须学好和掌握好数据结构的相关知识。所以,打好“数据结构”的扎实基础,对于学习计算机其他专业知识,如操作系统、数据库管理系统、人工智能、等都是十分有益的。
虽然数据结构这门课程对于计算机专业的学者来说极其重要,但普遍反映这门课程难学,不易理解。但我们只要掌握以下几点,就一定会学好数据结构。
一、逻辑结构是基础
将要处理的数据及其关系抽象成用图形和文字描述的数学模型,这就是逻辑结构。数据的逻辑结构主要是描述数据之间的逻辑关系,而不只是数据本身。之所以称为逻辑结构,是因为它仍然是独立于计算机而客观存在的。在逻辑结构中,我们主要学习每种结构的整体特征和结构内部的各数据元素之间的逻辑关系。首先是最简单的直接逻辑关系,主要有两种:有序相邻和无序相邻。其次是间接的关系,树结构中的祖先和子孙的关系,图中的连通子图等等。越是复杂的逻辑结构,其关系种类越多,既有简单的直接关系,也有复杂的间接关系。在对逻辑结构有了全面清晰的认识之后,就应该考虑这些算法的逻辑实现过程。
二、存储结构是关键
存储结构即物理结构,是逻辑结构在计算机中实实在在的表示,包括数据的表示和数据之间所有逻辑关系的表示。在对逻辑结构的特点和各种逻辑关系都十分熟悉以后,进一步就是要学习逻辑结构所对应的物理存储结构。一般来说,每一种逻辑结构所对应的存储结构都有两大类:顺序存储结构和链式存储结构,这是因为在计算机存储器中可以用内存单元的相邻关系和地址间的指向关系来表示逻辑结构中的序关系对于顺序存储结构,主要是用物理上相邻的存储单元来存储逻辑上相邻的数据元素;而链式存储正好相反,逻辑上相邻的数据元素在内存中不一定相邻,但逻辑上相邻的元素之间有地址映象关系。一个数据元素有相邻关系的元素越多,其链式结构就越复杂,链中的结点的指针域也越多。
三、算法实现是目标
我们学习数据结构的目的是掌握这些常用结构的特征,以便在这些结构上实现各种基本操作,即算法。所谓算法,是指解决问题的办法,是用计算机语言来描述计算机的解题过程。怎样学习算法呢?这是程序设计领域一个包含很广的问题,在这里我们只讨论常见数据结构上的算法。
归根到底,要想掌是在于对结构特征的理解,包括逻辑结构和物理结构。逻辑结构是基础,物理结构是关键,在某种意义讲,是数据结例如栈是一种运算受限的线性表,它的逻辑结构特性是先进后出,所以它的插入和删除运算就和一般意义上的线性表不同,只能在端点处操作,称为入栈和出栈操作。在《数据结构》教材中提到的算法,主要有两大类:一类是建立在特定的某种数据结构之上的;另一类是可用于多种结构的在实际应用中大量使用的算法。不管是哪种算法,我们都要学会其算法思想,并能初步进行最坏情形下的时间复杂度分析,对于简单的算法,还要求能求出其平均时间复杂度握数据结构上算法的实现.
以上阐述了沿着数据及其关系的不断抽象过程来学习数据结构及其算法的方法。由于数据结构专业性很强,除了对知识基本概念的掌握和理解之外,还需要培养一定的抽象思维能力和程序设计能力,并且理论联系实践,多运行程序,将算法用于实际,这样才能真正学好数据结构。
参考文献:
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2004
[2]唐策善,黄刘生.数据结构(pascal语言版) [M].合肥:中国科学技术大学出版社,2000
[3]丁宝康,李大学.数据库原理[M].北京:经济科学出版社,2000
转载注明来源:https://www.xzbu.com/8/view-44561.htm