当前位置:文档之家› 数据结构论文

数据结构论文

数据结构学院:班级:学号:姓名:一、摘要数据结构是计算机专业最基础也是最重要的学科之一。

它和程序设计一起未计算科学其他后继课程的学习奠定了基础。

在计算机广泛普及的今天,其应用几乎涵盖了人类社会的所有领域,而且在航空航天、军事、科学计算、信息检索、生产线控制等一些关键领域已经高度依赖计算机系统,而数据结构在其中起着无可替代的应用。

其实生活中也有好多应用数据结构的小事,只要留心观察,它无处不在。

例如:我们的家族图谱,遗传病图谱,公司成员职位一览表都应用到了数据结构中的树;还有我们小的时候玩的丢手绢游戏其实也用到了数据结构中的循环列表,而且在换人时用到了循环列表的插入和删除。

所以说,数据结构与我们的生活息息相关,学习和掌握好数据结构对我们处理日常生活中遇到的问题一定会有很大的帮助。

关键字数据结构,计算机专业,学科,应用,逻辑结构,存储结构,算法优化。

二、什么是数据结构数据结构在计算机科学界至今没有标准的定义。

个人根据各自的理解的不同而有不同的表述方法:Satartia Sahibah在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。

这些联系可以通过定义相关的函数来给出。

”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。

Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现。

”Robert L.Ruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。

其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。

数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。

一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。

《数据结构》作为计算机专业的一门专业基础课,其主要内容包括将现实世界转化为在计算机世界中的抽象的数据描述,数据在计算机中的组织以及不同数据类型的基本操作实现等,是相对比较难于理解和掌握的课程。

它不仅要有计算机方面的高级语言、计算机基础和计算机组成原理等软硬件基础知识,还需要有一定的如离散数学等数学理论。

这门课程也是联系一般基础课和专业课的“桥梁”,它既是程序设计的入门课程,也是诸如操作系统、编译原理、计算机网络以及数据库原理等后续课程的重要的基础课程,它不仅是构筑这些课程体系与知识结构的核心课程之一,同时对奠定学生计算机专业的基础具有重要意义。

从多年对计算机专业的学生跟踪情况看,数据结构课程掌握的程度与学生对学习后续课程的积极性密切相关,甚至影响到对整个专业知识的掌握。

对毕业学生工作情况的跟踪调查看,工作中的程序设计能力也需要有数据结构的相关知识。

一般来说,具有较好数据结构基础知识的学生,在工作过程中适应工作变动、开辟新的研究阵地的能力较强。

从而能较好地紧跟信息技术的高速发展。

在计算机当中数据结构是计算机的基础但是也是很重要的一门专业课,学好并了解其中的知识对今后的社会和经济发展起到很好的促进作用。

数据结构是在整个计算机科学与技术领域上广泛被使用的术语。

它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。

数据结构有逻辑上的数据结构和物理上的数据结构之分。

逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。

数据结构是数据存在的形式。

数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。

数据结构课程的主要目的是介绍一些常用的数据结构,阐明数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种数据结构,讨论对它们实行的各种运算的实现算法。

很多算法实际上是对某种数据结构施行的一种变换,研究算法也就是研究在实施变换过程中数据结构的动态性质。

数据结构,作为计算机学科的基础性专业课程,其在计算机科学中的及其重要,课程学习的好坏,直接关系到学员后期计算机水平的高低。

而这门课程一直因为过于抽象,难以理解,而让人望而止步。

如果能够把这门抽象的课程变得具体而生动,必将提高学习人员兴趣,增加其积极性和主动性,也有利于人员的对此课程的学习。

基于这些目的,我们开发了这个数据结构算法演示系统,数据结构是我们所做的系统的主要理论基础,我们完成了线性表、堆栈、队列、树、图几个主要结构,在学习数据结构这门课程的时候,我们了解了这些结构的算法,当时也做过一些相关的程序,在此基础之上,我运用c++ builder开发工具,把这些算法演示出来。

数据结构算法演示系统可以演示线性表、堆栈、队列、树、图等几个基础结构的算法,辅助一些算法说明,让使用者更好地掌握算法,在帮助中把演示的具体过程和操作做详细的介绍。

三、知识点第一章绪论本章主要起到总领作用,对数据结构的学习进行进行了一些先期铺垫。

主要是数据结构的基本概念,时间和空间复杂度的概念及度量方法,算法设计时的注意事项。

第二章线性表本章主要介绍了线性表的相关基本概念,前驱、后继、表长、空表、首元结点,头结点,头指针等概念。

线性表除第一及最后一个元素外,每个结点都只有一个前趋和只有一个后继的结构特点。

线性表的顺序存储方式及其在具体语言环境下的两种不同实现:表空间的静态分配和动态分配,静态链表与顺序表的相似及不同之处。

线性表的链式存储方式及以下几种常用链表的特点和运算:单链表、循环链表,双向链表,双向循环链表。

其中,单链表的归并算法、循环链表的归并算法、双向链表及双向循环链表的插入和删除算法等。

线性表的顺序存储及链式存储情况下,其不同的优缺点比较,即其各自适用的场合。

单链表中设置头指针、循环链表中设置尾指针而不设置头指针以及索引存储结构的各自优点。

第三章栈和队列本章主要学习了栈、队列的定义及其相关数据结构的概念,包括:顺序栈,链栈,循环队列,链队等。

栈与队列存取数据的特点,栈是后进先出而队列则是先进先出。

以及递归算法,栈与递归的关系,借助栈将递归转向于非递归的经典算法:fibonacci数列问题、hanoi 问题等。

栈的应用:数值表达式的求解,括号的配对等的原理。

循环队列中判队空、队满条件,循环队列中入队与出队算法。

第四章串本章主要是了解串的基本概念,串与线性表的关系,空串与空格串的区别,串相等的条件,串的基本操作,以及这些基本函数的使用,包括:取子串,串连接,串替换,求串长等等。

顺序串与链串及块链串的区别和联系,以及实现方式。

第五章数组和广义表本章学习了数组的定义,数组的顺序表示和实现。

矩阵的压缩存储一节中学习了特殊矩阵和稀疏矩阵的压缩储存,其次是学习广义表的定义,广义表的存储结构,广义表的递归算法:求广义表的深度、复制广义表的算法、建立广义表的存储结构。

第六章树与二叉树第六章主要介绍了二叉树的概念、性质和存储结构,二叉树遍历的三种算法(递归与非递归),在三种基本遍历算法的基础上实现二叉树的其它算法,线索二叉树的概念和线索化算法以及线索化后的查找算法,最优二叉树的概念、构成和应用,树的概念和存储形式,树与森林的遍历算法及其与二叉树遍历算法的联系,树与森林和二叉树的转换。

四、学习心得这是一门纯属于设计的科目,它需用把理论变为上机调试。

在学习科目的第一节课起,李老师就为我们阐述了它的重要性。

它对我们来说具有一定的难度。

它是其它编程语言的一门基本学科。

刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。

老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。

TC里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。

此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。

在这一段努力学习的过程中,我们的编程设计有了明显的提高。

其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。

现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。

只要努力去学习,就会灵活的去应用它。

多做实验!这个就没有太多理由了,我一直觉得编程是一门熟练科学,多编程,水平肯定会提高,最重要的是能够养成一种感觉,就是对程序对算法的敏感,为什么那些牛人看一个算法一下子就看懂了?而自己要看很久才能弄懂,而且弄懂了过了一阵子又忘记了?其实这个是因为牛人们以前看的程序很多,编得也很多,所以他们有了那种感觉,所以我觉得大家应该多看程序,多写程序,培养自己的感觉。

复习和考试的技巧,我想大家应该都有这样的感觉,就是觉得自己什么都掌握了,但是在考试的时候就是会犯晕,有时候一出考场就知道错在哪个了,然后考完以后一对答案,发现其实考得很简单,应该都是自己会做的,这个就是与自己的复习和考试的技巧有关系了。

首先就是复习,前面已经说过其实我们学的算法也就是几十个那,么我们的任务也就是理解这几十个算法,复习也就是要加深你的理解。

如何理解算,,然后理解到什么程度呢?是能默出整个算法吗?其实不是这样的,数据结构的考试有它的特点,考过程考试了,大家应该都发现数据结构其实不要求你把整个算法背出来,它注重考察你的理解,那么怎么考察呢?其实也就是两种方式吧,一种就是用实例,就是给你一个例子,要你用某个算法运行出结果,我想这个期末考试的时候仍然会有很多这样的题目,比如排序那块就很好出这样的题目,要复习这种题目我觉得很简单,就是每个算法都自己用例子去实践一下,以不变应万变,我期中复习的时候就是这样去做的,而且考试之前我就觉得那个并查集的题目就很有可能会考,于是就自己出了几个例子,做了一下。

另外一种考察方式就是算法填空和算法改错,可能有一些同学觉得这种题目很难,其实我们首先可以确定这两种题目肯定是与书上算法有关系的,只要理解了书上的算法就可以了,有人觉得看完书以后什么都懂了,而且要默也默得出来,其实不是这样的,算法改错和填空主要是考察的细微处,虽然你觉得你默得出来,那是能够默出算法的主体部分,很多细微的地方你就会很容易忽略。

相关主题