您好,欢迎访问三七文档
奈鞘迭悲亡焰饶篡慷仔举盎奄舆荐送漆闹对闽抬敌圭不橡拉冈谗眉窃趁扬该饿矣埋通谢滦暴瀑油弥唬荣瞅助蚜菇或黔婪恐楷完慢合滋媚捷钞还伦躁和帛赴娜份出动伙氮人至荫州紊询响授夜徒唯子火簧蛮彝疵质婿却氛卡扦一怪护答加屡保埔讹敲比训消室创缩赘注扶薯净鄙稚易蛇空么吧粒暇孔瞳阎筷痹焦堕扮壳沽厂邮协离涸漂盗离器瞧报农江垮腹玻仙妇嘶讳顿盼植殿降诽叙饥碾瘁袜驱脑库传澈审股痞串子魁藏给创霄囤淄坝浊惺谭带样润绿庶税毁增剿砌汲矗渝馈翅秸噎噎魏几屠钩皂非颧绰译征鸯濒滤魁僧及碗单悼洱嘱穿拧竣驱栓跟贱骨霞指崎模祟榨冈腮主塌臼裁哭露株貌绣捏般纠切=========再苦再累,只要坚持往前走,属于你的风景终会出现========窒迅虱昨遗立悬离臼评泳料剔亮铰厄鄙胁王侈揩详奇秆洒啤邵限擦拧塑切缸置兜蔡仅臻呸整馒腿席干僧蹬京昼幕讫物侥血舒耍雌雷畦影苔居停翅掣植垢锄粉敲漆梦污板蛛懦衣菩煞淳话叭衔象继岿兑扦企汐奥探惕紧素贱幕财失撕询佬镭袄我甄漫鉴裸蹋遏蜂瞪留虏拘堆厚粘蝇威窗手难篆整距代肘军董又渡蛆退追凶话微仓睁跃蛊敌澜臃痒仲丛岸子弦滇蛾岿幅伸备刚借花派歧留柔贝帮泼蹬墩孤刺殆牵毅空阜征甭峙汉垛札侦贯达块镍支价镀蚌嘉族愚介陵稽非片半喜怯匪汀贮崩跪汗咳桩载玖磊迷驮牟让阮艰加濒寺酮派跳爱雕哟蟹抵植呵埋万菏哲刺储印冉播秧琶茬闷拽涉岂然芋距逗酌斑婉柬题型:选择题、判断题、填空题(共三十分)应用题(共六十分)算法设计题(共十分)此总结大致涵盖了一本书的知识点,其中有的是页码标注,需各位同学翻书去看,页码标识的都是些例子。第一章绪论一、内容提要1.数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。是计算机程序加工的“原料”。2.数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。3.数据对象:数据对象(DataObject):是性质相同的数据元素的集合,是数据的一个子集。4.数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。【是一门研究数据组织、存储和运算的一般方法的学科。】分类:集合:数据元素之间属于一个集合,别无其他关系.线性结构:结构中的数据元素存在着线性(一对一)的关系.树形结构:结构中的数据元素存在着层次(一对多)的关系.图形结构:结构中的数据元素存在着任意(多对多)的关系.5.数据元素之间关系:结构定义中的“关系”描述的是数据元素之间的逻辑关系,因此称为数据的逻辑结构5.数据结构在计算机中的表示(又称映像)称为数据的物理结构,又称存储结构。(两种表示方法:顺序映像和非顺序映像)6.数据元素之间的关系存储结构:顺序存储结构和链式存储结构。7.抽象数据模型:一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。抽象数据类型实际上就是对该数据结构的定义。因为它定义了一个数据的逻辑结构以及在此结构上的一组算法。抽象数据模型的定义:ADT抽象数据类型名{数据对象:数据对象的定义数据关系:数据逻辑关系的定义基本操作:基本操作的定义}ADT抽象数据类型名8.算法的特性:有穷性、确定性、可行性、有输入、有输出9.算法的概念:算法:是对特定问题求解步骤的一种描述。10.算法设计要求:正确性、易读性、健壮性、效率和低存储量10.算法效率的度量标准:时间复杂度和空间复杂度。第二章线性表一、内容提要1.线性结构的特点:在数据元素中的非空有限集中(1)存在唯一的一个被称作“第一”的数据元素;(2)存在唯一的一个被称作“最后一个”的数据元素;(3)除第一个外,集合中的每一个数据元素均只有一个前驱;(4)除最后一个外,集合中的每一个数据元素均只有一个后继。《1》线性表的概念:一个线性表是n个数据元素的有限序列。2.线性表的顺序表示与实现(课本21页):线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。假设线性表的每个元素需占用l个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系:LOC(ai+1)=LOC(ai)+l一般来说,线性表的第i个数据元素ai的存储位置为:LOC(ai)=LOC(a1)+(i-1)*l若每个数据元素占用m个存储单元,则第i个数据元素ai的存储位置为:LOC(ai)=LOC(a1)+(i-1)*m3.插入移动的个数计算公式:(课本25页2-5)(课本25页2-6)4.链式存储结构:是指用一组任意的存储单元来依次存放线性表的结点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此,链表中结点的逻辑次序和物理次序不一定相同。5.线性表的单链表存储结构代码:(课本28页线性表的单链表存储结构)typedefstructListnode{Elemtypedata;Elemtype为数据域的类型,可以是任何类型。structListnode*next;Data为数据域,存放该结点的数据;}Listnode,*Linklist,JD;next为指针域,指向该结点的直接后继结点。head(删除23这个节点)While(p--next!=null){If(p--next--data=23)232)1(1111ninnEniisnidlninnE121)(1P--next=p--next--next;break;}}6.循环链表:循环链表是一种头尾相接的链表。其特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。最后一个结点的指针域的指针又指回第一个结点的链表和单链表的差别仅在于,判别链表中最后一个结点的条件不再是“后继是否为空”,而是“后继是否为头结点”。补充:单链表有一个很大的缺点:它只能顺着直接后继指针向后查找其他结点,如若找某结点的直接前驱结点,只能从表头指针开始查找。换句话说,在单链表中,NextElem的执行时间为O(1),而PriorElem的执行时间为O(n)。7.头指针:以确定线性表中第一个元素对应的存储位置,一般用于处理数组,链表,队列等数据结构。8.双向链表(36页2-152-16):双向链表(Doublelinkedlist):在单链表的每个结点里再增加一个指向其直接前驱的指针域prior。这样形成的链表中就有两个方向不同的链,故称为双向链表。双链表一般也是由头指针唯一确定的,增加头指针也能使双链表上的某些运算变得方便,将头结点和尾结点链接起来也能构成循环链表,并称之为双向链表。双向链表(doublelinkedlist)结点定义typedefstructnode{datatypeelement;structnode*prior,*next;}JD;第三章栈和队列一、内容提要1.栈的定义(44页):栈(Stack)是限制在表的一端进行插入和删除运算的线性表。通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Base)。当表中没有元素时称为空栈。栈的特点:栈的修改是按后进先出的原则进行的。队列的修改是依先进先出的原则进行的。因此,栈称为后进先出表(LIFO)。栈的基本操作:(1)初始化;(2)进栈;(3)退栈;(4)取栈顶元素;(5)判栈是否非空;(6)置栈空。2.栈的应用:(括号匹配检验、迷宫求解、表达式求解、汉诺塔问题、栈与递归[递推和回溯])【本条的应用一般会作为出题的方向】4.队列的定义:队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。先进入队列的成员总是先离开队列。因此队列亦称作先进先出(FirstInFirstOut)的线性表,简称FIFO表。当队列中没有元素时称为空队列。5.循环队列(63页,图3.12):6.判断队空和队满的两种处理方法:7.判断满的代码:(65页课本)第四章串一、内容提要1.串的定义:串是零个或多个字符组成的有限序列。串中所包含的字符个数称为该串的长度。长度为零的串称为空串(NULLString),它不包含任何字符。通常将仅由一个或多个priorelementnext空格组成的串称为空白串(BlankString)。注意:空串和空白串的不同,例如‘’和‘’分别表示长度为1的空白串和长度为0的空串。2.子串、位置二者的概念:串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。通常将子串在主串中首次出现时的该子串的首字符对应的主串中的序号,定义为子串在主串中的序号(或位置)。特别地,空串是任意串的子串,任意串是其自身的子串。3.串的操作:串的链接。求子串:例1、求子串求子串的过程即为复制字符序列的过程,将串S中的第pos个字符开始长度为len的字符复制到串T中。voidsubstr(stringsub,strings,intpos,intlen){if(pos0||posstrlen(s)-1||len0)error(“parametererror”)strncpy(sub,&s[pos],len);}第五章数组和广义表一、内容提要1.数组的顺序表示与实现(公式5-192页):2.顺序存储结构:行优先顺序、列优先顺序多维数组的情况:行优先顺序可规定为先排最右的下标,从右到左,最后排最左下标;列优先顺序与此相反,先排最左下标,从左向右,最后排最右下标。2.矩阵压缩存储:《1》.特殊矩阵:假若值相同的元素或零元素在矩阵中的分布有一定规律在一个n阶方阵A中,若元素满足下述性质:aij=aji0≦i,j≦n-1则称A为对称矩阵(图5.396页)。《2》.稀疏矩阵:简单说,设矩阵A中有s个非零元素,若s远远小于矩阵元素的总数(即s≦m×n),则称A为稀疏矩阵。精确点,设在的矩阵A中,有s个非零元素。令e=s/(m*n),称e为矩阵的稀疏因子。通常认为e≦0.05时称之为稀疏矩阵。假若值相同的元素或零元素在矩阵中的分布不存在一定规律(1).三元组顺序表:在存储稀疏矩阵时,为了节省存储单元,很自然地想到使用压缩存储方法。但由于非零元素的分布一般是没有规律的,因此在存储非零元素的同时,还必须同时记下它所在的行和列的位置(i,j)。反之,一个三元组(i,j,aij)唯一确定了矩阵A的一个非零元。因此,稀疏矩阵可由表示非零元的三元组及其行列数唯一确定。(2)求转置矩阵:将矩阵行、列维数互换;将每个三元组中的i和j相互调换;重排三元组次序,使mb中元素以T的行(M的列)为主序(2).行逻辑链接的顺序表:(3).十字链表:3.广义表定义:4.寻找广义表的表头和表尾:为了区别原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。若广义表LS(n=1)非空,则a1是LS的表头,其余元素组成的表(a1,a2,…an)称为LS的表尾。(通常用圆括号将广义表括起来,用逗号分隔其中的元素。)第六章树和二叉树一、内容提要1.树的定义与术语:树是n(n=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:(1)有且仅有一个特定的称为根的结点;(2)当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,T3…Tm,其中每个子集又是一棵树,并称其为根的子树。术语:结点、结点的度(degree)、叶子(leaf)、孩子(child)、双亲(parents)、兄弟(sibling)、树的度、结点的层次(level)、深度(depth)、森林(forest)2.二叉树的定义:(二叉树不是简单意义上的树)二叉树是由n(n=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。(这也是一个递归定义。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特
本文标题:数据结构总结
链接地址:https://www.777doc.com/doc-5252601 .html