数据结构课程总结
孙博 1104011045 11 计本3班
如何合理的组织数据、高效的处理数据是扩大计算机应用领域、提高软件效率的关键。而在软件开发过程中人们会要求软件工程师们使程序有更高的运行效率。因此要成为一名合格的软件编程员,必须具备数据结构领域和算法设计领域的专门知识。资料个人收集整理,勿做商业用途
本学期我们在李红老师的带领下学习了《数据结构结构与算法》一书。这本书安排十分合理,在第一章对全书进行导引和学习的基础知识、预备知识。在2—6章中使逻辑结构为“线性”的数据结构及其应用知识内容。在7、8章中使逻辑结构中的为“树形”的数据结构及应哟就能够只是内容。在第九章中使逻辑结构为“集合性”的数据元素在三列存储下的数据结构及其应用知识内容。在第十章使逻辑结构为“图形”的数据数据结构及其应用知识内容。下面将对各章的内容惊醒总结:资料个人收集整理,勿做商业用途
第一章:首先介绍了数据的相关知识,讲述了数据的概、构成等,数据的最小组成单位。然后讲述了数据类型与数据结构。资料个人收集整理,勿做商业用途
数据类型包括概念及定义,数据类型包括简单数据类型和复杂数据。简单数据类型有:整数,实属,字符,指针,枚举量等。而复杂数据类型包括:数组,结构图,共用体。资料个人收集整理,勿做商业用途
而数据结构主要使讨论元素之间的关系,数据结构包括三方面内容,及逻辑结构,存储结构以及一组运算集合。数据的逻辑结构有四种基本结构:集合性结构,线性结构,树形结构,图形结构。数据的存储结构是指数据严肃在存储器中的存储方式包括顺序存储,链表存储,索引存储,散列存储。资料个人收集整理,勿做商业用途
然后介绍以前学习的C语言(及本教材的使用的算法描述工具)知识锦兴路回顾包括指针、结构比阿亮、函数、递归、动态存储分配、文件操作等内容。资料个人收集整理,勿做商业用途
第二章:顺序表及其应用主要介绍的是线性逻辑结构的呼声几乎在顺序存储方法下的数据结构顺序标的概念、数据类型 、数据结构、基本运算及相关应用问题。资料个人收集整理,勿做商业用途
应用一:查—介绍了两种方法:简单顺序查(从书序标的一端来时扫描,将待查元素与数据节点中的个元素比较。若相等,则查成功,否则失败)和二分查(将表中间的记录的关键字与给定的值比较,若相等,则成功。否则,将顺序表风味左右两个字表,然后在子表中进一步查。)资料个人收集整理,勿做商业用途
应用二:排序问题—介绍了交换排序,选择排序,插入排序,归并排序。
1、 插入排序
包括直接插入排序(将顺序表分为左右两个子表,左子表为有序表,右子表为无序表,将右子表中的元素插入左子表中)和希尔排序法(将整个待排序的元素序列分割成若干子序列,对每个子序列分别进行直接插入排序,当整个带排序元素序列“基本有序时”,在进行直接插入排序)资料个人收集整理,勿做商业用途
2、 交换排序
a) 冒泡排序:两辆比较待排序元素的关键字,发现相反时即进行交换,知道没有逆序的元素为止。
b) 快速排序算法:在待排序的元素中选定一个“中间数”,将其他数据元素与该数比较,将比其小的数据放道左子表中,比起大的放入右子表中。资料个人收集整理,勿做商业用途
3、 选择排序
a) 直接选择排序:将数据进行多谈排序,每趟选出其中的最大数或最小数放在最终位置上,每趟中已排好的数不再参加下一轮的排序。资料个人收集整理,勿做商业用途
b) 堆排序:输出堆顶元素→将剩余元素按关键字大小重诚信排列成一个堆→重复上述2个步骤
二叉树的基本性质4、 归并排序
将两个或两个以上的有序表合并成一个新的有序表。
应用三:字符处理问题
介绍了串和顺序串的定义及相关概念,还有顺序串的基本算法。
第三章:介绍链表。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高,且在存储空间上有动态申请的优点。这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。弄清其个运算的算法思想及其时间复杂度和空间性能。最后介绍了链表之中存储结构在实际中的相关应用。资料个人收集整理,勿做商业用途
a) 单循环链表是一种首尾相接的单链表,终端结点的指针域指向开始结点或头结点。链表终止条件是以指针等于头指针或尾指针。采用单循环链表在实用中多采用尾指针表示单循环链表。优点是查头指针和尾指针的时间都是O(n),不用遍历整个链表。资料个人收集整理,勿做商业用途
b) 双链表就是双向链表,就是在单链表的每个结点里再增加一个指向其直接前趋的指针域prior,形成两条不同方向的链。由头指针head惟一确定。双链表也可以头尾相构成双循环链表。双链表上的插入和删除时间复杂度均为O(1)。资料个人收集整理,勿做商业用途
顺序表和链表的比较
a) 基本空间的考虑 存储密度是指节点数据本身所占的存储量除以结点构所占的存储总量所得的值。值越大存储空间利用率越高。资料个人收集整理,勿做商业用途
顺序表是静态分配的,存储密度为1,链表是动态分配的,存储密度小于1。
b) 顺序表适用于静态查,要进行删除和插入操作时,需移动大量结点。 链表适用于做动态的插入和删除。
第四章:堆栈是运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;堆栈在文字处理,匹配问题和算术表达式的求值问题方面的应用。资料个人收集整理,勿做商业用途
a) 栈的基本运算有六种:构造空栈:InitStack,判栈空:StackEmpty,判栈满:StackFull,进栈:Push,退栈:Pop,取栈顶元素:StackTop资料个人收集整理,勿做商业用途
b) 在顺序栈中有“上溢”和“下溢”的现象。“上溢”是栈顶指针指出栈的外面是出错状态。“下溢”可以表示栈为空栈,因此用来作为控制转移的条件。资料个人收集整理,勿做商业用途
c) 顺序栈中的基本操作有六种:构造空栈,判栈空,判栈满,进栈,退栈,取栈顶元素
d) 链栈则没有上溢的限制,因此进栈不要判栈满。链栈不需要在头部附加头结点,只要有链表的头指针就可以了。
e) 链栈中的基本操作有五种:构造空栈,判栈空,进栈,退栈,取栈顶元素
第五章:队列及其应用,我们知道队列是一种特殊的线性表,是一种具有线性逻辑结构的数据元素的集合。而队列的运算遵循“先进后出”的原则,因此,队列也是一个运算受限制的线性表。资料个人收集整理,勿做商业用途
a) 队列的基本运算有六种:置空队:InitQueue,判队空:QueueEmpty,判队满:QueueFull,入队:EnQueue,出队:DeQueue,取队头元素:QueueFront资料个人收集整理,勿做商业用途
b) 顺序队列的“假上溢”现象:由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是空的却产生了“上溢”现象。为了克服“假上溢”现象引入循环向量的概念,是把向量空间形成一个头尾相接的环形,这时队列称循环队列。资料个人收集整理,勿做商业用途
c) 判定循环队列是空还是满,方法有2种:一种是另设一个标志变量来判断;第二种是少用一个元素空间,入队时先测试(q->rear%m=q->front? )满:空。资料个人收集整理,勿做商业用途
d) 队列的链式存储结构称为链队列,一个链队列就是一个操作受限的单链表。为了便于在表尾进行插入的操作,在表尾增加一个尾指针,一个链队列就由一个头指针和一个尾指针唯一地确定。链队列不存在队满和上溢的问题。在链队列的出队算法中,要注意当原队中只有一个结点时,出队后要同进修改头尾指针并使队列变空。资料个人收集整理,勿做商业用途
第六章:介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。其中三元组和十字链表这两种结构尤为重要;对着两种结构的建立了应用要掌握。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的
表示问题。资料个人收集整理,勿做商业用途
第七章:二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈夫曼树、二叉排序树和堆排序,其中关于二叉排序树和哈弗曼书的构建是重点。资料个人收集整理,勿做商业用途
a) 两种特殊的二叉树:完全二叉树(非叶子节点均有两个孩子节点并且对于仍一层某一节点有孩子节点,该层所有节点均有孩子节点)和满二叉树(在完全二叉树上的基础上最下层从左到右删除若干个节点。)资料个人收集整理,勿做商业用途
b) 二叉树的5个重要性质
c) 根据结点的次序不同可得三种遍历:先序遍历,中序遍历、后序遍历。
d) 二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序
第八章:介绍了树和森林。树与二叉树是不同的概念。教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。资料个人收集整理,勿做商业用途
第九章:散列结构是一种查效率很高的一种数据结构。本章的主要知识点有:散列结构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查性能分析。资料个人收集整理,勿做商业用途
第十章:介绍了图的概念及其应用,是本书的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解AOV网和拓扑排序及其算法。资料个人收集整理,勿做商业用途
心得体会以及建议:通过学习《数据结构与算法》我们可以设计出更好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。 “软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章
来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的描述。资料个人收集整理,勿做商业用途
这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。资料个人收集整理,勿做商业用途
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论