在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。大家想知道怎么样才能写一篇比较优质的范文吗?这里我整理了一些优秀的范文,希望对大家有所帮助,下面我们就来了解一下吧。
数据结构推荐书目 数据结构笔记整理篇一
数据结构:数据结构就是数据的组织形式,也可看成是包含数据结构的数据表,说明数据之间存在着一定的相互关系或约束。数据结构被形式地定义为(d,r),其中d是数据元素的有限集合,r是d上的关系有限集合.数据类型:一个值的集合和定义在这个值集上的一组操作的总称;数据运算:对数据施加的一种操作;数据结构和数据类型两个概念之间区别:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。
逻辑结构:我们把只表现元素之间逻辑关系,而不涉及它们在计算机中的表示,只是理论的、反映在纸面上的东西,这种抽象的数据结构称为逻辑结构。
物理结构:抽象的数据结构在计算机内的表示,也就是映射在存储空间上的、具体的数据结构在计算机内表示,也就是映射在存储空间上的、具体的数据结构。
数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称;数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项组成。数据项是数据的最小单位。
数据对象:性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间一种或多种特定关系的数据元素的集合。根据数据元素之间关系的不同特性。数据结构包括逻辑结构(线性结构,如线性表,栈,队,串,数组 和非线性结构如 树结构、图结构)、物理(存储)结构(集合、线性结构、树形结构和图状结构或网状结构)和数据运算如插入、删除、修改、排序、查找。数据结构中,与所使用的计算机无关的数据叫逻辑结构,数据结构在计算机内存中的表示是指数据的存储结构
四大类存储结构:顺序存储、链式存储、索引存储和散列存储。顺序存储包括数据存储(把逻辑上相邻的元素存储在地址连续的存储单位)和数据关系存储(通过连续的物理地址体现关系);链式存储包括数据存储(把逻辑上相邻的元素存放在物理地址随意的存储单元)和数据关系存储(不仅存放数据本身还存放数据元素的物理地址)
抽象数据类型adt:一个数学模型以及定义在该模型上的一组操作,包括_数据和操作_两个部分 算法的特性:有穷性(执行有穷步结束)、确定性(确切含义,不会产生二义性)、可行性、输入(零个或多个输入)和输出(一个或多个输出)
算法设计的要求:正确性、可读写、健壮性、效率与低存储量需求。
2、数据的逻辑结构是指图形结构_三种类型,树形结构和图形结构合称为非线性结构_。数据的逻辑结构被分为集合结构、线性结构、树形结构、图形结构4种。
17_称为存储结构.1821、算法的执行时间是
371、某算法的时间复杂度为o(n2),表明该算法的_____.2.算法分析的目的是问题规模之间的关系;算法分析的两个主要方面是空间复杂度和时间复杂度
5.在决定选取何种存储结构时,一般不考虑
a.各结点的值如何b.结点个数的多少c.对数据有哪些运算d.编程语言实现这种结构是否方便。
10.程序段i = 0;while(i<=n){i = i * 3
12数据项的个数要相同,而且对应的数据项的类型要一致 1.数据结构是一门研究非数值计算的程序设计问题中计算机的系和运算等的学科。数据结构式相互之间存在一种或多种特定关系的数据元素的集合。10.数据的运算最常用的有5-1-
第二章 线性表
1.线性表:一个线性表是n个类型相同的数据元素的有限序列。线性表的顺序表示:用一组地址连
续的存储单元依次存储线性表的数据元素。顺序存储结构的特点:优,可随机存取表中任一元素,方便快捷;缺,再插入或删除时,需移动大量元素,数组的静态空间分配。
2.线性结构与非线性结构的不同点:线性结构反映结点间的逻辑关系是 一对一的,非线性结构反
映结点间的逻辑关系是多对多的。
3.从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较个结点,4.在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入*s结点,则执行 5.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的,删除一个
元素时大约要移动表中的(n-1)/2两种情况下求平均个元素。
6.设单链表中指针p指着结点m,指针f指着将要插入的新结点x,当x插在链表中最后一个结点
m之后时,只要先修改后修改p->link=f即可。
7.在一个长度为n的顺序存储的线性表中,删除第i个元素(1<=i<=n)时,需要从前向后依次前移i个元素前插入元素需移动
存储结构需要分配较大空间,插入和删除不需要移动元素的线性表
9、在双向链表存储结构中,删除p所指的结点时需修改指针p所指的结点的前趋结点(若存在)时需修改指针
1.在循环双链表的p所指结点之前插入s所指结点的操作是12.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用_结点的双循环链表__存储方式最节省运算时间;某线性表最常用的操作是在最后一个结点之后插
入一个结点或删除第一个结点,故采用_仅有尾指针的单循环链表存储方式最节省运算时间;对
于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为用尾指针表示的循环单链表
14.15.16.17、不带头结点的单链表head为空的判定条件是 带头结点的~是
19、带头结点的双循环表l为空表的条件是。
20、非空的循环单链表head的尾结点(由p所指向)满足21.在一个长度为n(n>1)操作与链表的长度有关;与单链表相比,双链表的优点之一是顺序访问相邻结点更灵活
23线性表的链接存储中,元素之间的逻辑关系是通过链接指针决定的。
24、从顺序表中删除第i个元素时,首先把第i个元素赋给_针开始向后的所有元素均前移一个位置,最后使线性表的长度减1。
25,26、循环单链表l为空的条件是
27、在以hl为表头指针的带表头附加结点的单链表和循环单链表中,链表为空的条件分别为。
28、在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为,若p为一个数组a中的下标,则其后继结点的下标的a[p].next。
29、在由数组a中元素结点构成的单链表中,在下标为i的结点的后面插入一个下标为j的结点
时,需要进行的操作为a[j].next=a[i].next和a[i].next=j语句。
第三章 栈和队列
1.栈:是限定仅在表尾进行插入或删除操作的线性表。栈又称为先进后出lifo的线性表。
2.判定一个栈st(最多元素为m0)为空的条件是
2.栈的两种存储方法:一是顺序栈,即栈的顺序存储结构是利用一组地址连续的存储单元依次存
放自栈底到栈顶的元素;二是栈的链式表示。
3.队列:队列是一种先进先出fifo的线性表。允许插入的一端叫做队尾rear,允许删除的一段则
称为队头front
4.链队的出队入队操作:s入队,rear->next=s;rear=s;p出队:front->next=p->next
5.顺序队:插入元素:front不变,rear加1;删除元素:rear不变,front加1。判定一个顺序栈
st(最多元素为maxsize)为空的条件是6.循环队列:空队满队都是rea=r=front为区分,规定循环队列中剩一个元素即为满队,front=rear+1
7.8.9.向一个栈项指针为hs的链栈中插入一个*s结点时,则执行。
10.在一个链队列中,假定front和rear分别为队首指针和队尾指针,则进行插入*s结点的操作时
应执行rear->next=s;rear=s;
11.若己知一个栈的进栈序列是1,2,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi(1
23、判定一个环形队列qu(最多元素为maxsize)为空的条件是是(qu->rear+1)%maxsize==qu->front
列的元素个数是(rear-front+maxsize)%maxsize。
24.从一个不带头结点的栈顶指针为1st的链栈中删除一个结点时,用x保存被删结点的值,则执行5.栈顶指针
7.在链表qu中,判定只有一个结点的条件是设有一个顺序栈s,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s4,s6,s5,s1,则顺序栈的容量至少应为3。
9.设计一个判别表达式中左、右括号是否配对出现的算法,采用数据结构最佳
例:设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆
列车开出车站的所有可能的顺序。
答:至少有14种①全进之后再出情况,只有1种:4,3,2,1②进3个之后再出的情况,有
3种,3,4,2,13,2,4,13,2,1,4③进2个之后再出的情况,有5种,2,4,3,12,3,4,12,1, 3,4
2,1,4,32,1,3,4④进1个之后再出的情况,有5种,1,4,3,21,3,2,41,3,4,21, 2,3,41,2,4,3
第四章 串
1.串:由零个或多个字符组成的有限序列;串中字符的数目n称为串的长度,零个字符的串称为
空串。包含子串的串相应的称为主串,通常称字符在序列中的序号为该字符在串中的位置。
2.空串是,其长度等于度等于其包含的空格个数。组成串的数据元素只能是 单个字符。
4.一个字符串中称为该串的子串。
5.若串s= ‘software’,其子串的数目是字符串长度为n的字串的个数计算公式 :[n+(n-1)+...+ 1+1])
60.串是一种特殊的线性表,其特殊性体现在61.设有两个串p和q,求q在p中首次出现的位置的运算称为 串:1。kmp算法,求next函数值等。时间:o(n+m)。其中,模式匹配为o(n);预处理为
o(m);求两串的最长公共子串,时间为o(n)是不行的,至少要o(n2)。
第五章 数组(线性结构,元素受限,操作不限)和广义表
1.矩阵的压缩存储:是指为多个值相同的元只分配一个存储空间,对零元不分配空间。
2.树的存储结构:
一、双亲表示法:就是用一组连续空间存储树的结点,同时在每个结点中附设
一个指示器指示其双亲的结点在数组中位置。特点:找双亲容易,找孩子难;
二、孩子兄弟表示
法(又称二叉树和二叉链表表示法)链表结构中的两个链域分别指向该结点的的第一个孩子结点
和下一个兄弟结点。操作容易,破坏了树的层次
第六章 树和二叉树
1.树:树是由n个类型相同的元素构成的有限集。
2.二叉树的性质:在二叉树的第i层上至多有2i-1个结点;深度为k的二叉树最多有2k-1个结点;
叶子结点比度为2的结点个数多1。
3.遍历二叉树:先序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)。前后序遍历确定
跟,中序遍历确定左右子树,依次判断,方法是:由前序先确定root,由中序可确定root的左、右子树。然后由其左子树的元素集合和右子树的集合对应前序遍历序列中的元素集合,可继
续确定root的左右孩子。将他们分别作为新的root,不断递归,则所有元素都将被唯一确定.第七章图
一、图的定义和术语:
1、图(graph)——图g是由两个集合v(g)和e(g)组成的,记为g=(v,e)
其中:v(g)是顶点的非空有限集 e(g)是边的有限集合,边是顶点的无序对或有序对
2、有向图—有向图g是由两个集合v(g)和e(g)组成的其中:v(g)是顶点的非空有限集e(g)是有
向边(也称弧)的有限集合,弧是顶点的有序对,记为
,v,w是顶点,v为弧尾,w为弧头
3、无向图——无向图g是由两个集合v(g)和e(g)组成的其中:v(g)是顶点的非空有限集e(g)是边的有限集合,边是顶点的无序对,记为(v,w)或(w,v),并且(v,w)=(w,v)
4、n个顶点的有向图最大边数是n(n-1); n个顶点的无向图最大边数是n(n-1)/26、权——与图的边或弧相关的数叫~;简单路径——序列中顶点不重复出现的路径叫~
14、简单回路——除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫~
16、连通图——图中任意两个顶点都是连通的叫~;连通分量——非连通图的每一个连通部分叫~
18、强连通图——有向图中,如果对每一对vi,vjîv, vi¹vj,从vi到vj 和从vj到 vi都存在路径
1、深度优先搜索----从图的某一顶点v0出发,访问此顶点;然后依次从v0的未被访问的邻接点
出发,深度优先遍历图,直至图中所有和v0相通的顶点都被访问到;若此时图中尚有顶点未被
访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止
深度遍历:v1-> v2->v4-> v8->v5->v3->v6->v72、广度优先遍历(bfs)——方法:从图的某一顶点v0出发,访问此顶点后,依次访问v0的各个
未曾访问过的邻接点;然后分别从这些邻接点出发,广度优先遍历图,直至图 中所有已被访问的顶点的邻接点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作
起点,重复上述过程,直至图中所有顶点都被访问为止
第九章 查找
1.静态查找——拆半查找:确定待查记录所在的范围,然后逐步缩小范围知道找到或找不到该记
录为止。假设low和high分别为待查元素所在范围的上下界,指针mid指示区域中间的位置,mid=[low+high]/2.此处low和high分别为位置而非数值。比较时与mid做比较,比mid大,low=mid+1,反之high=mid-1,mid重新计算。查找成功或失败最多比较关键字个数不超过[log2n]+1
例:折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它
将依次与表中20,70,30,50 比较大小,查找结果是失败。
2.静态查找——顺序查找:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,相等则查找成功,反之失败。平均查找长度:asl=(n+1)/2
3.二叉排列树:或是一棵空树;或者是具有以下性质的二叉树:1.若它的左子树不空,则左子树
上所有结点的值均小于它的根结点的的值;2.若它的右子树不空,则右子树上所有借点得知均大
于它的根节点的值;3.它的左右子树上也分别为二叉排列树。
数据结构推荐书目 数据结构笔记整理篇二
“数据结构”课程总结
计算机科学与技术专业从1994年开始为我校专科生开设“数据结构”课程,2004年开始为本科生开设这门课程。由于本门课程的教学从教材、讲授、实验指导都体现了先进的教育理念,该课程的教学体系科学、完整,教学手段与方法先进,课程特色鲜明,2006年被评为赤峰学院本科层次精品课。几年来,数据结构课题组成员从以下几个方面对本门课程进行了建设和改革。
一、课程建设指导思想、定位和特色 1.学科地位
“数据结构”是计算机科学与技术专业的一门学科基础课,是本专业和相关专业必修课。本课程的教学目标是培养学生通过理解、分析和研究计算机处理的数据对象的特性,从而选择适当的数据结构、存储结构和相应的算法,并熟练掌握算法的时间分析和空间分析技巧。“数据结构”还是计算机科学与技术专业部分专业课的先导课,如“数据库原理与应用”、“计算机操作系统”、“计算机编译原理”和“面向对象的程序设计”等。所以本课程的教学效果将直接影响到学生对其它后续专业课的学习,因此,该课程在专业建设的地位十分重要。
“数据结构”是一门应用性很强的课程,本课程要求学生在掌握各种数据结构,特别是存储结构和有关算法的基础上,通过大量的上机实例把难以理解的、抽象的概念转化为计算机能够正确运行的程序,从而提高学生运用所学知识解决实际问题的能力。2.课程特色
根据课程建设的规划和我系实际,我们针对《数据结构》课程教学开展讨论,并就实验、图书资料等方面进行建设。在不断的教学实践中,我们按照精品课建设要求,积极探索,积累了丰富的教学经验。
采用国内经典教材,结合前沿的研究领域和最新科研动态,丰富教学内容,让学生了解数据结构的实际应用价值。
采用课堂教学与大作业相结合,上机实践为补充的教学模式,培养学生的创业创新素质和团队协作精神。
二、教师队伍建设
1.良好的学缘结构
任课教师的业务水平和教学水平是影响课程建设质量的重要因素。为此,我们不断加强师资队伍建设,特别注重青年教师和实验指导教师的培养。在担任该课程教学任务的5名教师中,教授1名、副教授2名、讲师2名,学历结构为硕士4人、学士1人,45岁以下3人,35岁以下2人。本教师梯队学历层次较高,职称、年龄结构合理,便于本门课程的建设和发展。
2.加强学术交流,不断提高团队整体教学和科研水平
在教学过程中,我们采取了互相听课,举行公开课、观摩课等方式,经常交流教书育人和教学改革方面的经验,不断提高任课教师的教学水平和学术水平。
以范体贵教授为学科带头人的教学研究梯队,具有丰富的教学经验和高昂的教学热情,同时具备较高的教学研究和科学研究水平。教学梯队成员在搞好教学的同时,积极申报承担各级各类教学研究和科学研究课题,并参加国内外相关学科的科研、教学等方面的学术交流活动。选派范体贵、门爱华两位老师参加全国计算机年会和全国数据库学术会议,与国内其他高校著名学者进行了教学、科研等方面的交流,学到许多宝贵的经验和方法。
注重与其他高校的合作和交流,学习其他院校好的教学经验和方法。选派主讲教师门爱华老师到清华大学计算机系做访问学者,访学期间门老师听取了本课程的讲授,经常与讲授本门课程的资深教授严蔚敏老师、殷仁昆老师进行交流、学习。二位老师都给予了具体的指导和建议,为我校本门课程的改革和发展提供了有利的帮助。请国内著名高校学者来我系讲学传授经验,在教学、科研等方面给予具体的指导。2008年10月清华大学著名数据库专家冯建华教授来我系讲学,课题组成员与冯教授进行了深入的交流,在教学和科研方面都有很大的收获。
3.开展科学研究,积极申请科研立项
数据结构课题小组成员积极进行相关领域的科学研究,几年来发表相关论文30余篇,承担自治区级科研项目四个,赤峰市科技局科研项目一个,院级项目一个,其中3个项目已经完成并通过验收。目前在研的一个科研项目是与清华大学合作申请的计算机前沿领域研究课题,相信通过该项目的研究和合作,对我系的科研工作会起到极大的促进作用,同时能够使我系科研水平上一个新的台阶。课题组成员经过几年的努力,在各方面都取得了一些成绩。范体贵、门爱华、张国祥、王玉红四位教师分别获得“赤峰学院课堂教学质量优秀奖”,范体贵、门爱华两位教师多次获得“赤峰学院科研成果优秀奖”的奖励。王玉红老师获得“毕业实习优秀指导教师“称号,门爱华老师2007年、2008年连续获得“毕业论文优秀指导教师”奖励。
建立了良好的人才培养制度,在学校和系里的大力支持下,鼓励现有教师提高学历与引进高学历教师相结合,经过几年的建设,已经形成了一支以中青年为主的学科梯队。积极鼓励中青年教师到国内名校进修或攻读硕士、博士学位,门爱华、董洁、王玉红分别考取了东北大学和辽宁工程技术大学的硕士研究生,已圆满完成学业并获得硕士学位。
三、教学内容、教材建设
1.理论环节教学内容及学时分配
“数据结构”是计算机科学课程体系中核心课程之首,作为学科的专业基础课,具有承上启下的重要作用。对应于学科中问题求解的理论、抽象和设计的方法论,本课程内容体系结构分为概念表述、构建数据模型、设计算法三个层面,突出数据组织方法与处理技术,贯穿程序设计和软件工程新思想和新观点。理论学时设置为72学时。
2.实践环节教学内容及学时分配
上机实践和课程设计重在培养学生软件设计的综合能力。在基本的课程实习基础上,自2001年起开设了数据结构课程设计,使课程的实践环节总学时数增加到60学时。提出了课程设计的规范要求,突出关键技术要点,贯穿基本技能训练主线,加强实践能力培养。
通过课程设计的训练,突出构造性思维训练的特征,提高了学生组织数据与进行编写大型程序能力,使学生更好地理解和掌握了算法设计所需的技术,为专业学习打下良好的基础。课程设计题目(动态更新、完善):航空客运订票系统;电梯模拟;简单行编辑程序;工资管理系统;医院排队看病活动的模拟;学籍管理系统;图书管理系统等。3.教材建设
教材建设是课程建设的重要环节。为此,根据教学大纲和本课程的发展需要,在本课程教材的选用上注重教材的先进性和科学性,我们选用了清华大学出版社严蔚敏教授等编写的《数据结构》(c语言版)作为教材,本书内容丰富、体系结构严谨、概念清晰、易学易懂,也是多所院校指定的考研参考教材,完全适合我系计算机科学与技术、信息与计算科学专业学生的需要。任课教师则多方面参考相关教材,选择部分编写精彩的内容充实到教案中。任课教师们广泛阅读相关文献,了解该领域前沿知识,并且在授课过程中介绍给学生,以开阔学生的视野,拓宽学生的知识面。同时,根据教材内容和实际教学要求,编写了《数据结构上机指导与习题就解答》,并正式出版了《数据结构实验教程》一书,该书作为自治区教育厅统编教材已在各高校广泛使用。
四、教学方法和教学手段
1.教学方法
在教学方法上,讲课、讨论和专题讲座等多种形式并用,以科学、生动灵活的讲授方式传授知识,培养学生的创造思维。教师在认真组织课堂讲授,注意各环节正常运行的同时,还针对不同的教学内容采取不同的方法进行讲解,做到课程内容既条理清晰、深入浅出,又重点突出、特色鲜明。教学内容灵活,既有必讲的内容,也有针对不同专业需要和特点选讲的内容。
通过布置适量的课后习题,使学生能够进一步巩固和提高对课上所学知识的领悟和应用能力。我们在选择习题时,一方面注重三基(基本理论,基本方法,基本技能)知识的掌握,另一方面也充分考虑知识的灵活应用,使学生能多角度、多方法地解决问题,既锻炼他们的系统性思维,又提高分析解决问题的能力。每两周安排一次习题课,由指导教师集中解决同学课上课下遇到的问题。
上机实践是学生对本门课程所学知识的一种全面、综合的能力训练,是与课堂听讲、自学和练习相辅相成必不可少的一个教学环节,也是对课堂教学效果的一种检验。通常,实习题中的问题比平时的习题复杂得多,也更接近实际。实习题注重原理与应用的结合,目的让学生学会如何把书上学到的知识运用于解决实际问题的过程中去,培养从事软件开发设计工作所必需的基本技能。同时,通过实践能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的作用。平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,可以多人合作,有利于一整套软件工程规范的训练和科学作风的培养。此外,实践环节中有很重要的一点,就是机器是比任何教师都严格的主考官。
2.教学手段
为了适应现代化教学的需求,我们在传统教学的基础上,充分利用现代科学技术,广泛应用多媒体教学课件和教学软件。将授课内容制作成了图文并茂的多媒体课件,利用多媒体技术对数据结构辅之以形象的动画,动态演示抽象的复杂数据结构的变化,用板书补充某些推导过程并完成和学生互动的内容,改变了以前课堂教学单调的弊病,激发了学生的学习兴趣。使用多媒体技术还可以直接在课堂上演示算法的实现过程,让学生熟悉算法实现的环境和方法,增强了该门课的实践性,提高了课堂授课效率和教学质量,取得了满意的教学效果。教师们为了更好地适应社会的发展和改革的需要,本着强化算法的思想,在现有数据结构内容的基础上,补充了新的算法,拓宽了学生的知识面。
五、课程建设取得的成果
1.教学科研论文
1)the boundary element analysis for the thermal conduction of the thermal equipment。proceedings of international conference on computational physics, rinton press, us,(2005)199-202(sci)
2)基于访问控制列表的路由器防火墙在网络安全中的应用研究。计算机与网络 24,(2004)52-53(核刊)3)信息系统在企业现代化管理中的应用。《商场现代化(学术版)》,2005.2 25-26(核刊)4)可信网络基本概念与基本属性研究。《赤峰学院学报 》2007.5 5)基于包过滤技术路由器防火墙在网络安全中的研究。《计算机应用研究》,2007,vol23 6)research on the architecture of tru-network。2008 international symposium on information science and engineering 7)路由器防火墙对冲击波、震荡波病毒的过滤研究。《赤峰学院学报》 2005.1 67-68 8)菲涅耳圆孔衍射的数值模拟。《赤峰学院学报》 2006.1 9)复杂轴承流体动力学特性的边界元分析。《润滑与密封》 2006.3(核刊 ei核心刊源)10)三叶轴承流体动力学特性的边界元分析。《润滑与密封》 2006.5(核刊 ei核心刊源)11)164-182hf核的低能谱和电磁跃迁的相互作用玻色子模型。《高能物理与核物理》 28(12),(2004)119-122(核刊, sci收录)12)基于访问控制列表的路由器防火墙在网络安全中的应用研究。《计算机与网络》 2004.24 13)赤峰学院校园网路由器、交换机的选型及远程登录。《赤峰教育学院学报》2004.5 81-82 14)《xml数据库存储策略综述》 《计算机科学》 2005年9月(核刊)15)《xml数据库结构连接算法之研究》《计算机科学》 2007年6月(核刊)16)《xml中xpath包含关系判定算法》《内蒙古大学学报》2008年10月(核刊)17)《基于关系数据库的xml数据的存储研究》《赤峰学院学报》 2006年 3 月 18)《xml数据库模式匹配算法研究》 《赤峰学院学报》 2007年 5月 19)《internet蠕虫的分析与研究》 《赤峰学院学报》 2005年 4月 20)《如何防止外部网络的攻击》 《赤峰学院学报》 2004年2月 21)《射频ic卡消费系统的设计与实现》 《赤峰学院学报》 2008年10月 22)《xpath片断的分析与研究》 《赤峰学院学报》 2008年1月 23)《一种基于层次结构的xml编码技术》 中国教育信息化》 2009年4月(核刊)24)《vc++实现图形、数据库应用系统的思路》赤峰教育学院学报 2002年第2月 25)《基于ip组播的多媒体会议系统的设计》 赤峰教育学院学报 2002年6月 26)论文《个性化windows系统“开始”菜单》赤峰教育学院学报 2003年4月 27)浅谈debug程序的主要命令用法 赤峰学院学报 2007年5月 28)powerpoint技巧在课件制作中的妙用 赤峰学院学报 2006年1月 29)浅谈用masm运行汇编程序 赤峰学院学报 2005年 1月 30)xml数字签名浅析 赤峰学院学报 2008年 5月 31)《网络层的静态路由选择综述》 赤峰学院学报 2005年3月 32)《离散数学在计算机教学中的作业》 赤峰学院学报 2008年1月 33)《基于模拟退火算法的油井工矿数据挖掘的应用研究》
赤峰学院学报2009年1月
2.教研课题
1)赤峰学院校园网项目 赤峰学院 2002年-2003年(已验收)2)基于ip网qos动态控制研究 内蒙教育厅 2005年-2007年(已结题)3)基于结构索引xml模式匹配方法研究 内蒙教育厅 2005年—2007年(已结题)4)xml数据库研究 赤峰学院 2006年—2008年(已结题)5)cai系统中知识个性化组织与导航研究 内蒙教育厅 2003年-2005年(已结题)6)xml安全数据发布关键问题研究 内蒙教育厅 2009年—2010年(在研)3.教学获奖
1)范体贵、门爱华、张国祥、王玉红分别获赤峰学院2005、2006年、2007年、2008年“课堂教学质量优秀奖”;
2)门爱华2007年、2008年连续获的“毕业论文优秀指导教师”奖励; 3)王玉红2007年获院级“毕业实习优秀实习指导教师”奖励;
4)2009年《数据结构课程教学和实践》课题”获赤峰学院“优秀教学成果二等奖”。
数据结构课程组 2009年5月14日
数据结构推荐书目 数据结构笔记整理篇三
数据结构与算法课程论文综述
摘要
如何合理的组织数据、高效率的处理数据是扩大计算机应用领域、提高软件效率的关键。在软件开发过程中要求“高效地”组织数据和设计出“好的”算法,并使算法用程序来实现,通过调试而成为软件,必须具备数据结构领域和算法设计领域的专门知识。
《数据结构与算法》课程就是主要学习在软件开发中涉及的各种常用数据结构及其常用算法,在此基础上,学习如何利用数据结构和算法解决一些基本的应用问题。
课程主要内容
本学期一共学习了十章的内容,下面就这十章的内容作了详细的介绍。第一章:数据结构与算法概述
本章主要是对数据、数据类型、数据结构、算法及算法分析等基本概念的掌握,而如何合理地组织数据、高效地处理数据正是扩大计算机领域、提高软件效率的关键,所以对这些概念的理解就显得十分重要。
数据是指描述客观事物的数值、字符、相关符号等所有能够输入到计算机中并能被计算机程序处理的符号的总称,其基本单位是数据元素,而数据类型是一个同类值的集合和定义在这个值集上的一组操作的总称。在高级程序语言中定义一种数据类型时,编译程序编译系统就能获得如下信息:(1)、一组性质相同的值的集合;(2)、一个预订的存储体系;(3)、定义在这个值集合上的一组操作。数据结构是指数据元素之间的关系,它包括数据的逻辑结构、存储结构、一组运算集合;数据的逻辑结构分为线性结构和非线性结构。数据的存储方法有:顺序存储方法、链接存储方法、索引存储方法和散列存储方法。接下来便是关于算法的有关概念,算法是为解决一个特定问题而采取的确定的有限步骤集合,它具有有穷性、确定性、可行性、输入和输出。关于算法的性能分析,分为时间性能分析和空间性能分析。第二章:顺序表及其应用
本章主要是对顺序表、顺序表的结构、数据类型、基本算法及相关应用的介绍。顺序表是一种简单而常用的数据结构,其应用范围较为广泛,包括查找问题、排序问题、字符处理问题等内容。第三章:链表及其应用
链表是一种简单、常用的数据结构,与顺序表相比,具有插入、删除结点不需要移动元素,不必事先估计存储空间大小等优点,操作较为灵活。它有六种基本运算:(1)、置空表(2)、求表长(3)、按序号取元素(4)、按值查找
(5)、插入(6)、删除。
单链表即链表的每个结点只有一个指针域,用来存储其直接后继的存储位置。但是这样就使得对结点前面的元素的操作很困难,所以就在每个结点增加一个指向其前驱结点的指针域,从而构成双向链表。同时由于每个结点的地址既存放在其前驱结点的后继指针中,又存放在其后继结点的前驱指针域中,所以双向链表的插入操作分为前插和后插。第四章:堆栈及其应用
首先要明白栈是一种受限制的线性结构,遵守“先进后出”的规则,其插入与删除操作都在栈顶进行。
其次根据顺序存储和链接存储,栈分为顺序栈和链栈。其中顺序栈栈是用地址连续的存储空间依次存储栈中数据元素,并记录当前栈顶数据元素的位置;基本算法包括置空栈、判栈空、判栈满、取栈顶元素、入栈和出栈。而链栈则使用链式存储堆栈的数据元素,并记录当前栈顶数据元素的位置;每个结点包括data数据域:用来存放数据元素的值,next指针域:用来存放其直接后继结点的存储地址,其基本运算和顺序栈相同。
最后是关于堆栈的应用:(1)、数值转换问题;由于在将十进制数n转换为d进制数时,最先得到的余数是d进制数的最低位,在显示结果时需要最后输出;而最后求得的余数是d进制数的最高位,需要最先输出。这与栈的“先入后出”性质相吻合,所以可用栈来存放逐次求得的余数,然后输出。(2)、括号匹配问题;当读取一个表达式时,一旦读到括号就进栈,而读到下一个括号时就与栈中括号比较,若相匹配,则出栈,否则继续读取表达式。到最后,如果栈为空栈,则说明括号匹配,否则括号不匹配。第五章:队列及其应用
首先和栈一样,要知道队列是一种受限制的线性结构,遵守“先进先出”的规则,其插入在队尾、删除在对头。
其次根据顺序存储和链式存储,队列也分为顺序队列和链队列。其中顺序队列是用地址连续的向量空间依次存储队列中的元素,同时记录当前对头元及队尾元素在向量中的位置。然后是链队列,即在存储器中占用任意的、连续或不连续的物理存储区域,使用动态结点空间分配;在这其中,值得注意的是链队列不存在队满的情况。
第六章:特殊矩阵、广义表及其应用
首先是关于矩阵的概念即存储方法;
1、二维数组中元素aij的地址为:(1)、以行序为主存储,loc(aij)=loc(a00)+[j*(m+1)+i]*d(2)、以列序为主存储,loc(aij)=loc(a00)+[i*(n+1)+j]*d,其中m为行数、n为列数、d为每个元素所占的存储单元的个数。
2、对称矩阵:即将下三角存储在一个一维数组sa[k]中,其中0≤k<(n+1)/2;当i≥j时,k=i*(i+1)/2+j,当i
3、三角矩阵:和对称矩阵的存储思路一样用一维数组sa[k]存储,若是上三角矩阵(下三角中元素均为常数c),则当i≥j时,k=i*(i+1)/2+j,当i
j时,k=n*(n+1)/2
4、对角矩阵:同样存储在一维数组sa[k]中,k=2i+j5、稀疏矩阵:即矩阵中非零元素个数远远小于矩阵元素个数,可用三元组表存储,将非零元素的值与其行号、列号存放在一起。
其次是关于广义表的概念;广义表是n(n≥0)个元素a1、a2、a3、„、an的有限序列,而ai或是原子或是一个广义表,所以广义表是递归定义。第七章:二叉树及其应用
首先关于二叉树的概念及其性质;二叉树是由n(n≥0)个结点组成的有限集合。在这其中有两种特殊的二叉树,满二叉树和完全二叉树。同时二叉树具有如下五个性质:(1)、在二叉树的第i层上至多有2(i-1)个结点(i>0)(2)、深度为k的二叉树至多有2(k)-1个结点(k>0)(3)、对任意一棵非空二叉树,若果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1(4)、有n个结点的完全二叉树(n>0)的高度为∟log2n」+1(5)、若对满二叉树或完全二叉树按照“从上到下,每层从左到右,根结点编号为1”的方式编号,则编号为i的结点,它的两个孩子结点编号分别为2i和2i+1,它的父节点编号为i/2。
其次是二叉树的存储结构分为顺序存储和链接存储。顺序存储是按在完全二叉树中的编号顺序,依次存储在一维数组中。这样的存储方式可以很方便地找到任一结点的父结点及左右孩子,但对于一般的二叉树会造成很大的空间浪费,且在插入或删除结点时需大量移动节点,不利于运算的实现。那么就引出了二叉树的链接存储,每个结点包括三个域,lchild指针域:记录该结点左孩子的地址、rchild指针域:记录该结点右孩子的地址、data域:存储该结点的信息。
接下来是二叉树的遍历及线索化,不仅要能对二叉树进行遍历、线索化操作,而且还要能够根据给出的遍历结果构造出二叉树。最后是二叉树的应用,例如哈夫曼树:为数据压缩提供了一种方法、二叉排序树:即中序遍历的结果是递增的有序序列。
第八章:树和森林及其应用
首先是关于树和森林的有关概念及存储结构;树或森林与二叉树之间有一个自然地一一对应关系,任何一个森林或一棵树可以唯一地对应到一棵二叉树;反之,任何一棵二叉树也能唯一地对应到一个森林或一棵树。在这里,要会如何将树或森林转换成二叉树、二叉树转换成树或森林。对于树的顺序存储结构:双亲表示法,链接存储结构:(1)、孩子表示法(2)、孩子兄弟表示法,只需了解。
其次是树和森林的遍历,要知道树只有先序遍历和后序遍历、森林只有先序遍历和中序遍历,且(1)、树的先序遍历与二叉树的先序遍历相同(2)、树的后序遍历与二叉树的中序遍历相同(3)、森林的先序遍历和中序遍历分别与二叉树的先序遍历和中序遍历结果相同。
最后是树的一个典型应用——b树,它是一种平衡的多路查找树,学习是根据实例走一遍算法,理解算法即可。第九章:散列结构及其应用
散列结构是以存储结点中的关键字作为自变量,通过确定的函数h(即散列函数或哈希函数)进行计算,把所求的函数值作为地址存储该结点。
首先是散列函数有:(1)、直接定址法(2)、除留余数法(3)、数字分析法(4)、平方取中法(5)、折叠法
其次是冲突处理,由于散列函数很可能将不同的关键字计算出相同的散列地址,所以就需要为发生冲突的关键字结点找到一个“空”的散列地址。冲突处理的方法有
1、开放定址法:hi=(h(key)+di)mod m,i=1,2,3,„,k(k≤m-1)例如(1)、线性探测再散列,取di=1,2,3,„,m-1(2)、二次探测再散列,取di=1(2),-1(2),2(2),-2(2),„(3)、伪随机探测再散列,取di=伪随机数;
2、链地址法:在散列表的每一个存储单元中增加一个指针域,把产生冲突的关键字以链表结构存放在指针指向的单元中。第十章:图及其应用 首先是图的有关概念;图是一种数据结构,可以用二元组表示,形式化定义为:graph(v,vr),其中v={x|x∈dataobject},r={vr},vr={<x,y> p(x,y)∧(x,y∈v)}。顶点的度、入度和出度,以顶点v为头的弧的数目称为v的入度,以顶点v为尾的弧的数目称为v的出度,而出度与入度之和即为顶点v的度。
其次是图的存储结构;(1)、邻接矩阵(2)、邻接表
最后的图遍历和图的典型应用;对于遍历图的深度优先算法或广度优先算法、最小生成树的普利姆算法或克鲁斯卡尔算法、最短路径的迪杰特斯拉算法和弗洛伊德算法以及有向无环图拓扑排序算法,都需要根据实例走一遍算法,从而掌握这些算法。
心得体会
最开始学习这门课时,我对它没有很深刻的认识,只是听说这门课比较难。学习起来会比较累。通过这一学期的学习也确实证实了这一点。在学习这门课的过程中自己也确实遇到了一些问题,主要是书本上的知识与老师的讲解都比较容易理解,但是当自己利用已学的知识编写程序时就感到非常的棘手,很多时候都是把大概的算法思想想出来后,又把书本上的程序抄写一遍来完成程序的编写。针对这一问题以后自己会尽量学习摆脱掉书本,自己慢慢学会独立编写程序。
结语
通过对数据结构与算法的整理和实际应用,我深刻了解到数据结构与算法的重要性,同时也加深了对它的认识和了解,了解到了数据结构与算法在生活、工作等生活各个方面的重要性和不可缺少性。我通过整理数据结构与算法的学习而获得的极大收获。我相信这次的学习会对我以后的学习和工作产生非常大的影响力。
参考文献
《数据结构与算法》(第二版)王昆仑
李红 主编
数据结构推荐书目 数据结构笔记整理篇四
《数据结构与算法》课程学习总结报告
本学期开设的《数据结构与算法》课程已经告一段落,现就其知识点及其掌握情况、学习体会以及对该门课程的教学建议等方面进行学习总结。
一、《数据结构与算法》知识点
第一章是这门学科的基础章节,从整体方面介绍了“数据结构和算法”,同时引入相关的学术概念和术语,如数据、数据元素、数据类型以及数据结构的定义。重点是数据结构的括逻辑结构、存储结构和运算集合的含义及其相互联系。数据结构和两大逻辑结构的4四种常用存储方法;逻辑结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序存储、链接存储、索引存储和散列存储四类。难点是算法复杂度的分析方法和性能的分析。
第二章详细地分析了顺序表。介绍了顺序表的相关概念及其有关运算。基本运算有:初始化表、求表长、排序、元素的查找、插入及删除等。元素查找方法有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序及归并排序等,在各种算法思想的先分析后,要弄清各种算法的时间复杂度与空间性能的优点和缺点,在什么特定的场合适合哪种算法思想。最后介绍了顺序串的概念,顺序串是顺序表的一个特例;区别在于组成顺序串的数据元素是一组字符,其重点在于串的模式匹配。
第三章介绍链表。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高,且在存储空间上有动态申请的优点。这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。弄清其个运算的算法思想及其时间复杂度和空间性能。最后介绍了链表之中存储结构在实际中的相关应用。
第四章,堆栈是运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;堆栈在文字处理,匹配问题和算术表达式的求值问题方面的应用。
第五章,队列是一种够类似堆栈的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进先出”的规则,对堆栈的操作只能在栈顶进行;其运算有入队、出队等操作。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。
第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。其中三元组和十字链表这两种结构尤为重要;对着两种结构的建立了应用要掌握。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的表示问题。
第七章二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序,其中关于二叉排序树和哈弗曼书的构建是重点。
第八章介绍了树。树与二叉树是不同的概念。教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。
第九章,散列结构是一种查找效率很高的一种数据结构。本章的主要知识点有:散列结
构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。
最后一章介绍了图的概念及其应用,是本书的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解aov网和拓扑排序及其算法。
二、对各知识点的掌握情况
总体来看,对教材中的知识点理解较为完善,但各个章节均出现有个别知识点较为陌生的现象,对某些具体的问题和应用仍有一些模糊与措手。各个章节出现的知识点理解和掌握情况明确一下。
第一章中我对数据和数据结构的概念理解较为透彻,熟悉数据结构的逻辑结构和存储结构。算法的时间、空间性能分析是重点,同样也是难点,尤其是空间性能分析需要加强。在某些强大与复杂的算法面前的处理有些棘手。
第二章,顺序表的概念、生成算法理解较为清晰,并且熟悉简单顺序查找和二分查找,对分块查找较为含糊。删除方面的问题比较容易些。排序问题中,由于冒泡排序在大一c语言课上已经学习过,再来学习感觉相对轻松些。对插入排序和选择排序理解良好,但是,在实际运用中仍然出现明显不熟练的现象。由于在归并排序学习中感觉较吃力,现在对这种排序方法仍然非常模糊,所以需要花较多的时间来补习。此外串的模式匹配也是较难理解的一个地方。
第三章链表中,除对双向循环链表这一知识点理解困难之外,在对链表进行插入删除和排序相关操作上同顺序表的操作基本相当。其他的知识点像单链表的建立和基本算法等都较为熟悉。
第四章和第五章有关堆栈以及队列的知识点比较少,除有关算法较为特殊以外,其余算法都是先前学过的顺序表和链表的知识,加上思想上较为重视,因此这部分内容是我对全书掌握最好的一部分。在一些实际问题的应用与处理方面,对其进行存储结构的选择还是需要认真考虑的。在算法的时间复杂度和空间性能的分析仍有些困难。
第六章的学习感觉较为困难的部分在于矩阵的应用上。在矩阵的存储结构中,使用三元组表发相对较为简单,而使用十字链表就有些困难了。但在某些问题的处理上又必须或从节省空间考虑采用十字链表来处理,想矩阵的加法运算。广义表的定义还是比较容易理解的,其存储结构也不难掌握,关于应用也只局限于在多项式的表示上。
第七章是全书的重点。在这一章中概念和定义都很多,有些很昏人但都很重要,要区分开来。二叉树的性质容易懂却很难记忆。对二叉树的存储结构和遍历算法这部分内容掌握较好,能够熟练运用。关于二叉排序树和的哈弗曼树却相对有些压力,其生成和对其关键字的插入和删除时重点。
第八章关于树的分析,首先要明确树和二叉树的区别,以及书中的相关定义和概念。关于二叉树、树和森林之间的转换和遍历方法是重点,但不算是难。接着就是数的存储结构的选择及转化为二叉树的算法,这部分有些吃力。再就介绍了特殊的树-b树,关于对b树的操作,插入关键字是中带领和难点。
第九章散列结构这一章理解比较完善的知识点有:基本概念和存储结构。散列函数中直接定址法和除留余数法学得比较扎实,对数字分析法等方法则感觉较为陌生。对两种冲突处理的算法思想的理解良好,问题在于用c语言描述上。
最后一章,图及其应用中,相关定义及其概念很多,容易混淆,这就要慢慢来,仔细分辨。图的邻接矩阵、邻接表表示法及其之间的转换时重点和难点。而对十字链表和邻接多重表的表示法则较为陌生。感觉理解较为吃力的内容有图的遍历(包括深度和广度优先遍历),以及最小生成树的问题。最短路径、aov网、关键路径、aoe网和拓扑排序的学习也是相对较轻松的。,三、学习体会
在学习开始,王教授就明确提出它不是一种计算机语言,不会介绍新的关键词,而是通过学习可以设计出良好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。联系到在大一和大二上学期学习的c和c++语言,我深刻认识到了这一点。“软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的描述。
这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。
四、对《数据结构与算法》课程教学的建议
1、建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生保持良好的精神状态。
2、建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。
以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!
【本文地址:http://www.xuefen.com.cn/zuowen/1088639.html】