第1页共19页数据结构导论复习第一章概论1.数据:凡能被计算机存储、加工处理的对象。2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。4.逻辑结构需要注意的几点:①逻辑结构与数据元素本身的内容无关②逻辑结构与数据元素相对位置无关③逻辑结构与所有结点的个数无关5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点?答:集合中任何两个结点之间都没有逻辑关系,组织形式松散;线性结构中结点按逻辑关系依次排列形成一条“锁链”;树形结构具有分支、层次特性,其形态有点像自然界中的树;图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。7.运算是在逻辑结构层次上对处理功能的抽象8.基本运算的含义?答:假如是S上的一些运算的集合,是的一个子集,使得中每一运算都可以“归约”为中的一个或多个运算,而中任一运算不可归约为别的运算,则称中运算为基本运算9.数据结构是指由一个逻辑结构S和S上的一个基本运算集构成的整体(S,)。10.数据结构涉及数据表示和数据处理两个方面11.存储结构的含义和四种基本存储方式的基本思想?答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。12.运算实现与运算的联系与区别?答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。13.算法的概念和分类?答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被机械地求解。算法的类型有:运行终止的程序可执行部分、伪语言算法和非形式算法(根据描述算法语言不同)14.算法在给定输入下的计算量的含义和估算的方法?答:算法在给定输入下的计算量是指根据该类问题的特点合理地选择一种或几种操作作为“标准操作”,确定每个算法在给定输入下共执行多少次标准操作,并将此次数规定为该算法在给定输入下的计算量。估算的方法有:最坏时间复杂度和平均时间复杂度。15.最坏情况时间复杂性和平均时间复杂性的概念?答:最坏情况时间复杂性也称为最坏时间复杂度,是指以算法在所有输入下的计算量的最大值作为算法的计算量;平均情况时间复杂性也称为平均时间复杂度,是指以算法在所有第2页共19页输入下的计算量的加权平均值作为算法的计算量;16.空间复杂性指的是一个算法除输入数据占存储空间之外所需要的附加存储空间的大小。17.算法的性质:正确性、易读性、健壮性和高效率。第二章线性表1.线性结构:是n(n≥0)个结点的有穷序列。2.线性结构的基本特征:若至少含有一个结点,则除起始结点没有直接前趋外,其他结点有且仅有一个直接前趋;除终端节点没有直接后继外,其他结点有且仅有一个直接后继。3.线性表的逻辑结构是线性结构4.线性表的六种基本运算的功能?答:⑴初始化INITIATE(L),功能是建立一个空表⑵求表长LENGTH(L),功能是返回线性表L的长度⑶读表元GET(L,i),功能是返回线性表L的第i个结点⑷定位(按值查找)LOCATE(L,X),功能是返回找到的结点集合中序号的最小值,否则返回值为0(说明没有找到)⑸插入INSERT(L,X,i),功能是在线性表L的地i个位置上增加一个值为X的新结点(整个表长+1)⑹删除DELETE(L,i),功能是撤销线性表L的第i个位置结点(整个表长-1)5.顺序表表示法的基本思想、特点答:基本思想是:按照顺序存储方式,顺序表的一个存储结点存储线性表的一个结点的内容,即数据元素,所有存储结点按相应数据元素建的逻辑关系决定的次序依次排列。特点:逻辑结构中相邻的结点在存储结构中仍相邻。6.区别顺序表的容量与线性表的表长?答:顺序表的容量是指定义顺序表时的maxsize的值,而线性表的表长是指其中包含的结点个数。7.顺序表中ai的地址计算:ai的地址=b+(i-1)*l,b是首地址,l是每个结点占的空间7.掌握顺序表上实现插入、删除和定位运算的三个算法P18-208.单链表表示法的基本思想——用指针表示结点间逻辑关系9.单链表的结点形式:答:由数据域和指针域两部分组成;这两部分各自的作用分别是数据域是用于存储线性表的一个数据元素的,指针域是用于存放一个指针的,该指针指向本结点所含数据元素的直接后继所在的结点。10.头指针和头结点的作用?答:头指针是一个指向链表开始结点的指针,单链表由头指针唯一确定;头结点是我们人为地在链表的开始结点之前附加的一个结点,有了头结点之后,头指针指向头结点,不论链表是否为空,头指针总是非空的,而且头指针的设置使得对链表的第一位置上的操作和在其他位置上的操作一致。11.单链表上实现插入、删除和定位三种运算的三个算法:P26-2812.插入算法中所包含的指针操作:s=malloc(size);s→data=x;s→next=p→next;p→next=s;删除算法中所包含的指针操作:q=p→next;p→next=q→next;free(q);13.Malloc(size)的作用:①生成一个结点②形式一条指针14.循环链表的组织方法:将单链表中的尾结点的NULL改成指向头结点的指针,就形成了循环链表。循环链表优点:可以从表中任一结点出发都可以向后扫描整表。第3页共19页15.双链表的结点形式:刻画双链表结构的对称性的语句:p→prior→next==p→next→prior;16.顺序表的主要优点和主要缺点:优点:①无需为表示结点间的逻辑关系而增加额外的存储空间②可以方便地随机存取表中的任意结点缺点:①插入和删除运算不方便②分配内存空间采用静态分配方式17.链表的主要优点:①插入和删除运算方便,只需要修改指针,不需要移动结点②分配内存空间采用动态分配方式18.字符串:以字符为数据元素,以线性结构为逻辑结构的数据。19.串的逻辑结构(是线性结构)和串的特点(是由0个或多个字符组成的有穷序列)20.串的基本运算的功能:判等EQUAL(S,T)的功能是两个串的长度要相等,而且对应位置的字符都要相同。21.串的顺序存储方法(紧缩格式和非紧缩格式)和链接存储方法第三章栈、队列和数组1.栈的基本运算及由此而决定的栈的基本特点栈是一种只允许在栈顶进行插入、删除的特殊线性表;其基本特点是采用“后进先出”操作;2.栈的基本运算:①初始化InitStack(S)②进栈Push(S,X)③退栈Pop(S)④读栈顶元素TOP(S)⑤判断栈空Empty(S)3.顺序栈“上溢”、“下溢”的概念“上溢”:顺序栈在进行进栈时,超过了顺序栈的最大的容量“下溢”:顺序栈在进行退栈时,栈中的元素少于0个元素4.进栈和退栈运算在顺序栈上的实现算法:P445.顺序栈上的简单算法(初始化,判栈空,取栈顶元素)6.链栈的结点形式及其描述:Data用来存放该结点的数据元素Next用来存放指向下一个数据元素7.链栈上实现进栈和退栈的算法P468.链栈上的简单算法(初始化,判栈空,取栈顶元素)9.队列的基本运算及由此决定的队列的特点队列是一种只允许在对头进行插入在队尾进行删除的特殊线性表;其基本特点是采用“先进先出”操作;10.顺序队上的“假溢出”及其解决方法:顺序队在进行多次入队、出队后,顺序队已经满了,但顺序队中的大部分空间是空的;解决方法:将顺序队改成循环队11.循环队队满、队空的条件:判断循环栈满的条件:((sq→rear+1)%maxsize)==sq→front判断循环栈空的条件:sq→rear==sq→front12.链队的结点形式及其链队的组织方法:DataNextpriordatanexta1anfrontrear第4页共19页13.在链队上实现入队、出队的算法P56-5714.数组的逻辑结构是线性结构的推广15.二维数组的基本运算是读与写16.二维数组:kjinajia*]*)1[(]0][0[]][[,其中a[0][0]是首地址,k是每个数据元素存储单元。17.稀疏矩阵的三元组表示法:A=(i,j,aij)000003040000000015000000100030AA=((1,2,3),(1,6,1),(3,1,5),(3,2,-1),(4,5,4),(5,1,-3))第四章树1.树的定义:是n(n0)个结点的有穷集合,满足:①有且仅有一个称为根的结点②其余结点分为m(m≥0)个互不相交的非空集合T1,T2……Tm,这些集合中的每一个都是一棵树,称为根的子树。2.树形结构的有关术语及其含义①根结点②双亲结点和孩子结点③兄弟结点和堂兄弟结点④子孙结点和祖先结点⑤树的层次、树的高度和树的度3.二叉树的逻辑结构、特点和五种基本形态(1):二叉树是n(n≥0)个结点的有穷集合,满足:①有且仅有一个称为根的结点②其余结点分为2个互不相交的集合T1,T2,T1是左子树,T2是右子树,且T1,T2也都是一棵二叉树。(2)特点:①二叉树是棵有序树②二叉树的度≤2(3)五种基本形态4.二叉树的基本运算和性质(1)二叉树的基本运算:①初始化INITIATE(BT)②求根ROOT(BT)③求双亲PARENT(BT,X)④求左孩子LCHILD(BT,X)求右孩子RCHILD(BT,X)⑤建树CREATE(X,LBT,RBT)⑥剪枝DELLEFT(BT,X)和DELRIGHT(BT,X)第5页共19页(2)二叉树的性质:①第i层上,最多有12i个结点②深度是K,最多总有12K是针对普通二叉树③n0=n2+1④具有n个结点,深度1log2nK是针对完全二叉树⑤按照从上到下,从左到右的顺序编号,5.二叉链表的结点形式及其描述,二叉链表中各结点的联系方法及根指针的作用(1)二叉链表的结点形式lchilddatarchilddata是存放该结点的数据元素,lchild是存放指向该结点的左孩子的指针,rchild是存放指向该结点的右孩子的指针。(2)根指针的作用,是用来指明根结点。6.满二叉树和完全二叉树的概念(1)满二叉树是深度为K的二叉树的总共结点数为12K(2)完全二叉树是在满二叉树上少0个或者从最下层的最右边开始少起的二叉树7.设计二叉树上基于三种遍历的简单算法8.判定树和哈夫曼树的概念(1)判断树是用来描述分类过程的二叉树(2)哈夫曼树是构造带权路径长度最小的二叉树9.哈夫曼树的特性:①m个权值构造的哈夫曼树的结点总数为2m-1②m个权值构造的哈夫曼树后权值都处在叶子结点上③在哈夫曼树中,权值越大离根越近④在哈夫曼树中,没有度为1的结点10.将树转化成二叉树时,得到的二叉树的右子树永远为空11.在n个结点的二叉链表中,总共有2n个指针,其中,非空指针数为n-1,空指针数为n+112.三叉链表的好处是方便每个结点找其双亲结点13.讨论树、森林和二叉树的关系目的是想借助二叉树上的运算方法来实现对树的一些运算14.要将先序、中序和后序遍历序列中的两种还原成唯一二叉树时,必须要有中序序列15.i2i2i+12i树二叉树先序序列先序序列后序序列中序序列对应的相同相同森林二叉树后根序列中序序列相同第6页共19页附录:树这章可以出的应用题1.二叉树二叉链表图rootAABCADAEAFAGAH2.二叉链表图二叉树(是上题中的逆操作)3.二叉树顺序存储结构图操作规则:①完全化②按从上到下,从左到右编号③依次存入对应的数组中的位子ABCDEFGH123456789101112134.顺序存储结构图二叉树(是上题中的逆操作)ABEDFCGHABEDFCGHABEDFCGH第7页共19页5.二叉树写出先序、中序和后序遍历