数据结构复习提纲

合集下载

数据结构复习提纲

数据结构复习提纲

《数据结构》复习提纲参考书:《数据结构》(C语言版)严蔚敏吴伟民编著清华大学出版社考试范围:第一章~第七章、第九章~第十章第1章绪论什么是数据结构;基本概念和术语,数据结构分类;抽象数据类型的表示和实现;逻辑结构、存储结构异同;算法和算法分析包括:算法、算法设计的要求、算法效率的度量、算法的存储空间需求第2章线性表线性表的类型定义,掌握基本概念。

线性表的顺序表示和实现线性表的链式表示和实现线性链表、循环链表、双向链表第3章栈和队列栈和队列的基本概念和基本操作栈抽象数据类型栈的定义栈的表示和实现栈的应用举例队列抽象数据类型队列的定义链队列——队列的链式表示和实现循环队列——队列的顺序表示和实现顺序表示和实现第4章串串类型的定义串的表示和实现定长顺序存储表示堆分配存储表示串的块链存储表示第5章数组和广义表数组的定义数组的顺序表示和实现矩阵的压缩存储特殊矩阵稀疏矩阵及三元组表示广义表的定义及其存储结构第6章树和二叉树掌握数和二叉树的基本概念和基本操作树的定义和基本术语二叉树二叉树的定义二叉树的性质二叉树的存储结构遍历二叉树树和森林树的存储结构森林与二叉树的转换树和森林的遍历赫夫曼树及其应用第7章图图的定义和术语图的存储结构数组表示法邻接表十字链表邻接多重表图的遍历深度优先搜索广度优先搜索图的连通性问题无向图的连通分量和生成树最小生成树有向无环图及其应用拓扑排序关键路径最短路径第9章查找静态查找表顺序表的查找有序表的查找索引顺序表的查找动态查找表二叉排序表和平衡二叉树B_树和B+树哈希表第10章内部排序了解、掌握各种排序方法的大致思路插入排序直接插入排序其它插入排序希尔排序快速排序选择排序简单选择排序树形选择排序堆排序C语言考试大纲C语言程序设计的考试内容一、C语言程序的结构1.程序的构成,main函数和其他函数。

2.头文件、数据说明、函数的开始和结束标志以及程序中的注释。

3.源程序的书写格式。

4.C语言的风格。

(完整word版)数据结构复习提纲

(完整word版)数据结构复习提纲

数据结构复习提纲复习内容:基本概念掌握:数据结构,逻辑结构,存储结构;数据类型;算法;T(n),S(n)的理解。

要学习的数据结构定义形式:n(n〉=0)个数据元素的有限集合.将约束:1、数据元素本身.2、数据元素之间的关系。

3、操作子集。

大多有两种存储(表示、实现)方式:1、顺序存储。

2、链式存储.一、线性结构:1、线性表:n(n〉=0)个相同属性的数据元素的有限序列。

12种基本操作.顺序表:9种基本操作算法实现.单链表:11种基本操作算法实现。

(重点:插入、删除)顺序表与单链表之时间性能、空间性能比较.循环链表:类型定义与单链表同。

算法实现只体现在循环终止的条件不同。

双向链表:重点插入、删除算法。

2、操作受限的线性表有:栈、队列。

栈:顺序栈;链栈(注意结点的指针域指向)。

(取栈顶元素、入栈、出栈)队列:循环队列(三个问题的提出及解决);链队列(注意头结点的作用).(取队头元素、入队、出队。

链队列中最后一个元素出队)3、数据元素受限的线性表有:串、数组、广义表。

串:定长顺序存储;堆分配存储.块链存储(操作不方便)数组:顺序存储。

特殊矩阵的压缩存储;稀疏矩阵(三元组表示、十字链表)广义表:长度、深度.取表头(可以是原子也可以是子表);取表尾(肯定是子表)。

链式存储。

二、树型结构:1、树:n(n>=0)个数据元素的有限集合.这些数据元素具有以下关系:……。

(另有递归定义。

)术语;存储(双亲表示、孩子表示、孩子双亲表示、孩子兄弟表示)。

2、二叉树:n(n〉=0)个数据元素的有限集合。

这些数据元素具有以下关系:……。

(另有递归定义)5个性质(理解、证明;拓展)。

遍历二叉树(定义、序列给出、递归算法、非递归算法);遍历二叉树应用:表达式之前序表达式、后序表达式、中序表达式转换。

线索二叉树(中序线索二叉树)。

树森林与二叉树的转换。

树与森林的遍历.赫夫曼树及其应用:定义、构造、赫夫曼编码。

三、图形结构:n(n〉=0)个数据元素的有限集合。

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳数据结构复习资料:复习提纲知识要点归纳一、数据结构概述1. 数据结构的定义和作用2. 常见的数据结构类型3. 数据结构与算法的关系二、线性结构1. 数组的概念及其特点2. 链表的概念及其分类3. 栈的定义和基本操作4. 队列的定义和基本操作三、树结构1. 树的基本概念及定义2. 二叉树的性质和遍历方式3. 平衡二叉树的概念及应用4. 堆的定义和基本操作四、图结构1. 图的基本概念及表示方法2. 图的遍历算法:深度优先搜索和广度优先搜索3. 最短路径算法及其应用4. 最小生成树算法及其应用五、查找与排序1. 查找算法的分类及其特点2. 顺序查找和二分查找算法3. 哈希查找算法及其应用4. 常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、快速排序六、高级数据结构1. 图的高级算法:拓扑排序和关键路径2. 并查集的定义和操作3. 线段树的概念及其应用4. Trie树的概念及其应用七、应用案例1. 使用数据结构解决实际问题的案例介绍2. 如何选择适合的数据结构和算法八、复杂度分析1. 时间复杂度和空间复杂度的定义2. 如何进行复杂度分析3. 常见算法的复杂度比较九、常见问题及解决方法1. 数据结构相关的常见问题解答2. 如何优化算法的性能十、总结与展望1. 数据结构学习的重要性和难点2. 对未来数据结构的发展趋势的展望以上是数据结构复习资料的复习提纲知识要点归纳。

希望能够帮助你进行复习和回顾,加深对数据结构的理解和掌握。

在学习过程中,要注重理论与实践相结合,多进行编程练习和实际应用,提高数据结构的实际运用能力。

祝你复习顺利,取得好成绩!。

数据结构(复习提纲)【整理】

数据结构(复习提纲)【整理】

2010年复习提纲第一章数据、数据结构的概念;基本逻辑结构的种类;集合线性树形图状基本存储方式的种类;顺序链式散列索引算法、算法的时间复杂度以及其计算。

算法的五大特性:输入输出确定性有穷性有效性时间复杂度的计算:忽略常数与中间变量,循环套循环用乘法第二章线性表的概念;顺序存储和链接存储的线性表的数据结构、特性;顺序存储的特性:查找方便,不易扩充链接存储的特性:插入删除方便顺序存储和链接存储的线性表的基本算法:创建、插入、查找、删除等;链表的其他形式(带表头、循环、双向、双向循环等)的概念及基本算法(与一般链表的不同处)。

带表头:便于其后结点执行标准化操作循环:首尾相接双向:既可以查找前继又可以查找后继双向循环:结合以上两点链表逆转;第二章相关算法列举如下1.。

顺序线性表的插入Int sq_insert(int list[],int *p_n,int i,int x) { Int j;If(i<0||i>*p_n) return(1);If(*p_n==MAXSIZE) return(2);For(j=*p_n;j>I;j--)List[j]=list[j-1];List[i]=x;(*p_n)++;Return(0);} 2.顺序线性表的删除Int sq_delete(int list[],int *p_n,int i) {Int j;If(i<0||i>=*p_n) return(1);For(j=i+1;j<*p_n;j++)List[j-1]=list[j];(*p_n)--;Return(0);}3.链式线性表的创建NODE *create_link_list(int n){ int i;NODE *p,*q;NODE *p_head;if(n==0) return(NULL);p_head=new(NODE);p_head->data=-1;p=p_head;for(i=1;i<=n;i++){printf("请输入第%d个节点的值\n",i);q=new(NODE);scanf("%d",&(q->data));p->link=q;p=q;}q->link=NULL;return(p_head);/*返回的是假头*/ ※4.链式线性表的插入(i之后)Int insert(NODE* *p_head,int i,int a) { int n=0;NODE *p,*q,*r;p=*p_head;if(i<1) return(0);while((p!=NULL)&&(n<i)){If(p->data!=-1) n++;q=p;p=p->link;}r=new(NODE);r->data=a;r->link=q->link;q->link=r;}※5.链式线性表的删除int del(NODE* *p_head,int I) { NODE *p,*q;int n=0;p=*p_head;if(i<1) return(0);while((p!=NULL)&&(n<i)){If(p->data!=-1) n++;q=p;p=p->link;}if(p==NULL) return(0);q->link=p->link;delete(p);return(1);} 6.单链表的逆置NODE * reverse(NODE *head) {NODE *p,*q;P=head->next;Head->next=NULL;While(p){Q=p->next;p->next=head->next;head->next=p;p=q;}return(head);}7.试写一高效的算法,删除表中所有大于mink且小于maxk的元素Void Delete_between(int a[],int mink,int maxk){p=L;while(p->next->data<=mink) p=p->next;(本循环结束时p是最后一个不大于mink的元素)if(p->next)(如果还有比mink更大的元素){q=p->next;while(q->data<maxk) q=q->next;(本循环结束时q 是第一个不小于maxk 的元素)p->next=q;}}第三章栈与队列的概念;栈:只允许在一端进行插入和删除的线性表队列:只允许在一端进行插入,且只允许在另一端进行删除的线性表顺序栈和链栈的数据结构与基本算法;顺序队列(尤其是循环队列)和链队列的数据结构与基本算法;栈的应用算法;如何判断顺序栈的空与满、如何判断循环队列的空与满;判断顺序栈的空与满:若top的初始值是-1 则判空条件是if(top==-1) 判满条件是if(top==MAXN)若top的初始值是0 则判空条件是if(top==0) 判满条件是if(top==MAXN-1)判断循环队列的空与满{Head=0,tail=0;判断循环队列的空与满的条件都是if(head==tail)}中缀表达式与后缀表达式规则以及两者间的转换。

数据结构_(严蔚敏C语言版)_学习、复习提纲.

数据结构_(严蔚敏C语言版)_学习、复习提纲.

期末复习 第一章 绪论 复习1、计算机算法必须具备输入、输出、可行性、确定性、有穷性5个特性。

2、算法分析的两个主要方面是空间复杂度和时间复杂度。

3、数据元素是数据的基本单位。

4、数据项是数据的最小单位。

5、数据结构是带结构的数据元素的集合。

6、数据的存储结构包括顺序、链接、散列和索引四种基本类型。

基础知识数据结构算 法概 念逻辑结构 存储结构数据运算数据:计算机处理的信息总称 数据项:最小单位 数据元素:最基本单位数据对象:元素集合数据结构:相互之间存在一种或多种特定关系的数据元素集合。

概念:数据元素之间的关系 线性结构:一对一非线性结构 树:一对多 图:多对多顺序存储结构 链表存储结构 索引。

散列。

算法描述:指令的有限有序序列算法特性 有穷性 确定性 可行性 输入 输出 算法分析时间复杂度 空间复杂度第二章 线性表 复习1、在双链表中,每个结点有两个指针域,包括一个指向前驱结点的指针 、一个指向后继结点的指针2、线性表采用顺序存储,必须占用一片连续的存储单元3、线性表采用链式存储,便于进行插入和删除操作4、线性表采用顺序存储和链式存储优缺点比较。

5、简单算法第三章 栈和队列 复习线性表顺序存储结构链表存储结构概 念基本特点基本运算定义逻辑关系:前趋 后继节省空间 随机存取 插、删效率低 插入 删除单链表双向 链表 特点一个指针域+一个数据域 多占空间 查找费时 插、删效率高 无法查找前趋结点运算特点:单链表+前趋指针域运算插入删除循环 链表特点:单链表的尾结点指针指向附加头结点。

运算:联接1、 栈和队列的异同点。

2、 栈和队列的基本运算3、 出栈和出队4、 基本运算第四章 串 复习栈存储结构栈的概念:在一端操作的线性表 运算算法栈的特点:先进后出 LIFO初始化 进栈push 出栈pop队列顺序队列 循环队列队列概念:在两端操作的线性表 假溢出链队列队列特点:先进先出 FIFO基本运算顺序:链队:队空:front=rear队满:front=(rear+1)%MAXSIZE队空:frontrear ∧初始化 判空 进队 出队取队首元素第五章 数组和广义表 复习串存储结构运 算概 念顺序串链表串定义:由n(≥1)个字符组成的有限序列 S=”c 1c 2c 3 ……cn ”串长度、空白串、空串。

数据结构复习提纲

数据结构复习提纲

复习提纲:第一章:1.数据结构的基本概念;2.数据结构的4类基本结构及其特性;3.存储结构的分类及特点;4.算法的时间复杂度计算;第二章:1.线性表的基本概念;2.线性表的顺序存储结构的特点和插入删除算法;3.顺序存储结构的应用;4.单循环链表的存储结构特点,链表空的判断方法、插入、删除结点算法实现,报数游戏算法实现;5.双链表的存储特点,插入、删除结点算法实现。

第三章:1.栈的特点、对同一序列根据栈的特点进行不同入栈、出栈操作所得结果的判断;栈的实现的相关操作;2.顺序栈的4各要素和相关操作关键语句;链栈的4个要素和相关操作关键语句;3.了解队列的特点和可执行的基本操作,并能做相关判断;4.顺序循环队列的队空、队满判断条件,入队、出队操作的相关关键语句;5.顺序循环队列中对同一序列根据队列进行不同的入队、出队操作后队头和队尾指针的变化判断。

第四章:1.串的定义、串长的定义和计算、子串个数计算(注意区分:子串与非空且不同于S本身的子串);2.串的模式匹配(区分BF算法和KMP算法),掌握使用KMP算法计算next数组的值,并且要求掌握匹配过程(BF和KMP的匹配过程不同!)。

前三章程序重点掌握作业四、作业五、作业六、作业八、作业九第五章:1.特殊矩阵的压缩存储地址计算,稀疏矩阵的压缩存储结构图。

2.广义表的定义、区分原子和子表,求表头和表尾,深度和层次计算,存储结构图绘制;3.提供一广义表,写出通过head()和tail()操作求出某个原子的表达式。

4.注意:取表头时即广义表的第一个元素,外面不再加括号;而取表尾时,要将除表头元素外的其他元素一起用圆括号括起来,即将原广义表去掉表头;第六章:1.树的定义和相关基本术语;2.树的表示和各种存储结构的表示;3.二叉树的定义和结点形态;4.熟练使用二叉树的性质进行相关计算;5.掌握提供边集画树及树的存储结构图并将树转换为二叉树;6.根据后序遍历和中序遍历的序列画出二叉树直观图,并给出其先序遍历的序列,画出线索二叉树存储结构图;7.根据二叉树的顺序存储结构图,画出二叉树及二叉链存储结构图,并给出该二叉树转换后的森林。

数据结构复习提纲

数据结构复习提纲

数据结构复习提纲一、线性表线性表是最基本的数据结构之一,它是具有相同数据类型的 n 个数据元素的有限序列。

1、顺序表定义和特点:顺序表是用一组地址连续的存储单元依次存储线性表的数据元素。

存储结构:通常使用数组来实现。

基本操作:插入、删除、查找、遍历等。

时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(n),查找和遍历操作的时间复杂度为 O(n)。

2、链表定义和特点:链表是通过指针将各个数据元素链接起来的一种存储结构。

单链表:每个节点包含数据域和指针域,指针域指向链表的下一个节点。

双链表:节点包含两个指针域,分别指向前驱节点和后继节点。

循环链表:尾节点的指针指向头节点,形成一个环形结构。

基本操作:插入、删除、查找等。

时间复杂度分析:插入和删除操作在平均情况下的时间复杂度为O(1),查找操作的时间复杂度为 O(n)。

二、栈和队列1、栈定义和特点:栈是一种限制在一端进行插入和删除操作的线性表,遵循“后进先出”的原则。

存储结构:顺序栈和链栈。

基本操作:入栈、出栈、栈顶元素获取等。

应用:表达式求值、括号匹配、函数调用等。

2、队列定义和特点:队列是一种在一端进行插入操作,在另一端进行删除操作的线性表,遵循“先进先出”的原则。

存储结构:顺序队列和链队列。

基本操作:入队、出队、队头元素获取等。

循环队列:解决顺序队列“假溢出”问题。

应用:层次遍历、消息队列等。

三、串1、串的定义和存储方式定长顺序存储堆分配存储块链存储2、串的基本操作串的赋值、连接、比较、求子串等。

3、模式匹配算法朴素的模式匹配算法KMP 算法:理解其原理和计算 next 数组的方法。

四、数组和广义表1、数组数组的定义和存储结构数组的地址计算特殊矩阵的压缩存储(如对称矩阵、三角矩阵、稀疏矩阵)2、广义表广义表的定义和表示广义表的递归算法1、树的基本概念定义、术语(如节点、度、叶子节点、分支节点、父节点、子节点、兄弟节点、层次等)树的性质2、二叉树定义和特点二叉树的性质完全二叉树和满二叉树3、二叉树的存储结构顺序存储链式存储4、二叉树的遍历先序遍历中序遍历后序遍历层序遍历5、二叉树的递归和非递归遍历算法实现线索化的目的和方法7、树、森林与二叉树的转换8、哈夫曼树定义和构造方法哈夫曼编码六、图1、图的基本概念定义、术语(如顶点、边、权、有向图、无向图、邻接矩阵、邻接表等)2、图的存储结构邻接矩阵邻接表十字链表邻接多重表3、图的遍历深度优先搜索(DFS)广度优先搜索(BFS)4、图的应用最小生成树(Prim 算法、Kruskal 算法)最短路径(Dijkstra 算法、Floyd 算法)拓扑排序关键路径七、查找1、查找的基本概念关键字、平均查找长度等2、顺序查找算法实现时间复杂度3、折半查找算法实现时间复杂度判定树4、分块查找5、二叉排序树定义和特点插入、删除操作查找算法6、平衡二叉树定义和调整方法7、 B 树和 B+树结构特点基本操作8、哈希表哈希函数的构造方法处理冲突的方法(开放定址法、链地址法等)八、排序1、排序的基本概念排序的稳定性2、插入排序直接插入排序折半插入排序希尔排序3、交换排序冒泡排序快速排序4、选择排序简单选择排序堆排序5、归并排序6、基数排序7、各种排序算法的时间复杂度、空间复杂度和稳定性比较。

数据结构复习提纲

数据结构复习提纲

数据结构复习提纲第一章绪论1.基本术语:数据,数据元素,数据对象,数据结构及其分类。

2.什么是算法?算法的特性。

3.时间复杂度及其简单计算。

第二章线性表1.线性表的定义,线性表的存储结构常有哪几种?各有何优缺点?2.顺序表的类型说明及其基本操作算法的实现3.链表结构的类型说明及其基本操作算法的实现。

表空条件,申请结点,插入,删除操作语句。

第三章栈和队列1.栈的定义及其特点。

队列的定义及其特点。

2.顺序栈的类型说明及其算法实现。

栈空,栈满条件,入栈出栈操作语句。

3.循环队列的类型说明及其算法实现。

队空,队满条件,入队出队操作,计算队列的长度语句。

第五章数组与广义表1.二维数组的两种存储方式及地址计算。

2.矩阵的压缩存储,对称矩阵,三角矩阵的地址计算。

3.什么是稀疏矩阵?稀疏矩阵的两种存储结构,算法的实现。

4.广义表的定义。

广义表的两种存储结构,广义表的表头,表尾计算第六章树和二叉树1.树的概念与定义。

2.二叉树。

满二叉树,完全二叉树的定义,二叉树的性质及其证明。

3.二叉树的存储结构及其类型说明。

4.二叉树的三种遍历及其递归算法实现。

5.树的三种存储结构。

6.树,森林与二叉树的转换。

7.哈夫曼树的定义。

哈夫曼树的构造及其哈夫曼编码。

第七章图1.图的定义及其术语。

2.图的存储结构。

邻接表,邻接矩阵。

3.图的深度,广度遍历及其应用4.最小生成树的两种构造算法。

5.什么是AOV网?拓扑排序的定义及其方法。

6.求关键路径的算法及其计算。

7.从源点到其余各顶点的最短路径的算法及其计算。

8.各对顶点的最短路径的算法及其计算。

第九章查找1.顺序表的查找算法及其算法实现ASL计算。

2.有序表的查找算法及其算法实现。

ASL计算3.二叉排序树的定义,特点,构造及其查找算法的实现ASL 计算。

4.B-树的定义,插入,删除,构造。

5.哈希函数,哈希冲突的定义。

构造哈希函数的方法,解决冲突的方法。

6.给出哈希函数,哈希冲突的解决方法,构造哈希表ASL计算。

数据结构复习提纲(整理)

数据结构复习提纲(整理)

复习提纲第一章数据结构概述基本概念与术语(P3)1.数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的基本单位3.数据对象相同性质的数据元素的集合4.数据结构包括三方面内容:数据的逻辑结构.数据的存储结构.数据的操作. (1)数据的逻辑结构指数据元素之间固有的逻辑关系.(2)数据的存储结构指数据元素及其关系在计算机内的表示( 3 ) 数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据结构、二元组2、根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。

3、常见的数据存储结构一般有四种类型,它们分别是___顺序存储结构_____、___链式存储结构_____、___索引存储结构_____和___散列存储结构_____。

4、以下程序段的时间复杂度为___O(N2)_____。

int i,j,x;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1x+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表结构由n(n>=0)个具有相同性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表结构#define MAXSIZE 100typedef int DataType;Typedef struct{DataType items[MAXSIZE];Int length;}Sqlist,*LinkList;//初始化链表void InitList(LinkList *L){(*L)=(LinkList)malloc(sizeof(LNode));if(!L){cout<<”初始化失败!”;return;}(*L)->next=NULL;}//插入数据void InsertList(LinkList L,int pos,DataType x){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”插入位置错误”;return;}InitList(&q);q->next=p->next;p->next=q;q->data=x;}//销毁链表void DestoryList(LinkList L){LinkList t;while(L){t=L;L=L->next;free(t);}}//遍历链表void TraverseList(LinkList L){LinkList t=L;while(L){t=t->next;cout<<t->data<<” ”;}cout<<endl;}//删除元素void DeleteList(LinkList L,int pos){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”删除位置错误!!”;return;}q=p->next;p->next=q->next;free(q):}第三章栈和队列1.栈(1)栈的结构与定义(2)顺序栈操作算法:入栈、出栈、判断栈空等(3)链栈的结构与定义2.队列(1)队列的定义----------------------------------------------------------------------------------------------------------------1、一个栈的入栈序列为“ABCDE”,则以下不可能的出栈序列是()A. BCDAEB. EDACBC. BCADED. AEDCB2、栈的顺序表示仲,用TOP表示栈顶元素,那么栈空的条件是()A. TOP==STACKSIZEB. TOP==1C. TOP==0D. TOP==-13、允许在一端插入,在另一端删除的线性表称为____队列____。

数据结构复习大纲

数据结构复习大纲

数据结构复习大纲第一章绪论1. 数据结构的基本概念和术语1.1 数据、数据元素、数据项、数据结构等基本概念1.2 数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系1.3 数据结构的两大逻辑结构和四种常用的存储表示方法2. 算法的描述和分析2.1 算法、算法的时间复杂度和空间复杂度、最坏的和平均的时间复杂度等概念2.2 算法描述和算法分析的方法,对于一般算法能分析出时间复杂度第二章线性表1. 线性表的逻辑结构1.1 线性表的逻辑结构特征2. 线性表的顺序存储结构2.1 顺序表的含义及特点,即顺序表如何反映线性表中元素之间的逻辑关系2.2 顺序表上的插入、删除操作及其平均时间性能分析3. 线性表的链式存储结构3.1 链表如何表示线性表中元素之间的逻辑关系3.2 链表中头指针和头结点的使用3.3 单链表、双(向)链表、循环链表链接方式上的区别3.4 单链表上实现的建表、查找、插入和删除4. 顺序表和链表的比较4.1 顺序表和链表的主要优缺点4.2 针对线性表上所需要执行的主要操作,知道选择顺序表还是链表作为其存储结构才能取得较优的时空性能第三章栈和队列1.栈的逻辑结构、存储结构及其相关算法1.1 栈的逻辑结构特点,栈与线性表的异同1.2 顺序栈和链栈上实现的进栈、退栈等基本算法1.3 栈的“上溢”和“下溢”的概念及其判别条件2. 队列的逻辑结构、存储结构及其相关算法2.1 队列的逻辑结构特点,队列与线性表的异同2.2 顺序队列(主要是循环队列)和链队列上实现的入队、出队等基本算法2.3 队列的“上溢”和“下溢”的概念及其判别条件2.4 使用数组实现的循环队列取代普通的顺序队列的原因2.5 循环队列中对边界条件的处理方法3. 栈和队列的应用3.1 栈和队列的特点,什么样的情况下能够使用栈或队列3.2 表达式求值的算法思想,及栈变化情况。

第四章串、数组和广义表1.串1.1 串的有关概念及基本运算1.2 串与线性表的关系2.多维数组2.1 多维数组的逻辑结构特征2.2 多维数组的顺序存储结构及地址计算方式2.3 数组是一种随机存取结构的原因2.4 矩阵的压缩存储(对称矩阵、三角矩阵、稀疏矩阵)的表示方式和对应的地址计算方式。

数据结构与算法复习提纲(详细版)

数据结构与算法复习提纲(详细版)

数据结构与算法复习提纲(详细版)数据结构与算法复习提纲第一章引论一、数学知识复习1、对数(重要公式:X A=B当且仅当A=log X B;关键思路:将对数转化成为指数分析)2、级数(重要公式:∑A i和∑i A;关键思路:同时乘上某个系数再相减)3、证明方法(数学归纳法和反证法:三个关键步骤(归纳基础、归纳假设、归纳证明))二、C++类1、构造函数(使用默认参数的构造函数;初始化列表)2、访问函数和修改函数(关键字const)3、接口与实现的分离(声明与实现必须精确匹配,两个例外:默认参数和explicit)三、C++细节1、参数传递(一般情形:单向传递/引用:双向传递/常引用:避免大对象的拷贝)2、★三大函数(当数据成员含有指针类型,三大函数必须显式给出;避免浅复制)⑴、析构函数(形式:~类名()/作用:释放资源)⑵、复制构造函数(形式:类名(const 类名&rhs)/作用:利用已有对象复制一个新对象)⑶、operator=(形式:const 类名&operator=(const 类名&rhs)/作用:赋值)四、模板1、★函数模板定义(template 通用函数定义)2、★类模板⑴、定义(template class 类模板名)⑵、调用(class 类模板名<实际参数> 对象名(参数))3、函数对象(定义一个包含零个数据成员和一个成员函数的类,然后传递该类的实例)五、矩阵1、基本思想(矩阵利用向量的向量来实现,即vector array)2、典型代码分析(包括构造函数和operator[]重载)第二章算法分析一、数学基础1、重要定义⑴、f(N)=Ο(g(N))(若存在正常数C和n0,使得当N≥n0时,有f(N)≤Cg(N))⑵、f(N)=Ω(g(N))、f(N)=Θ(g(N))和f(N)=ο(g(N)))2、★重要工具⑴、性质:log k N=O(N)⑵、洛比塔法则:判断两个函数的相对增长率二、最大子列和问题1、算法Ⅰ⑴、算法思想(i表示序列起点,j表示序列终点,k从i扫描到j)⑵、★时间复杂度分析(注意分析方法:∑(i:0~N-1)∑(j:i~N-1)∑(k:i~j))⑶、★算法的缺陷(重复计算)2、算法Ⅱ算法思想(i表示序列起点,j表示序列终点(省略辅助变量k))3、算法Ⅲ⑴、★分治策略(递归程序:传递数组和左右边界,后者界定了数组要被处理的范围/单行驱动程序:传递数组和0,N-1而启动递归程序)⑵、算法思想(递归出口分析;最大子序列和的三种可能情况)⑶、★时间复杂度分析(重要公式:T(N)=2T(N/2)+N)4、算法Ⅳ(任何负的子序列不可能是最优子序列的前缀)三、折半搜索1、概念:折半查找(在已排好序的队列中查找数X)2、算法思想(关键是分析low、high和mid)第三章表、栈和队列一、STL中的向量和表(STL,Standard Template Library,标准模板库)1、STL定义了vector(向量)和list(双向链表)两个类模板2、★★迭代器(iterator)⑴、迭代器的作用(位置标记)⑵、迭代器的声明(典例:vecto r。

数据结构复习提纲整理

数据结构复习提纲整理

复习提纲第一章数据结构概述基本概念与术语(P3)1.数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的基本单位3.数据对象相同性质的数据元素的集合4.数据结构包括三方面内容:数据的逻辑结构.数据的存储结构.数据的操作. (1)数据的逻辑结构指数据元素之间固有的逻辑关系.(2)数据的存储结构指数据元素及其关系在计算机内的表示( 3 ) 数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据结构、二元组2、根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。

3、常见的数据存储结构一般有四种类型,它们分别是___顺序存储结构_____、___链式存储结构_____、___索引存储结构_____和___散列存储结构_____。

4、以下程序段的时间复杂度为___O(N2)_____。

int i,j,x;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1x+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表结构由n(n>=0)个具有相同性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表结构#define MAXSIZE 100typedef int DataType;Typedef struct{DataType items[MAXSIZE];Int length;}Sqlist,*LinkList;//初始化链表void InitList(LinkList *L){(*L)=(LinkList)malloc(sizeof(LNode));if(!L){cout<<”初始化失败!”;return;}(*L)->next=NULL;}//插入数据void InsertList(LinkList L,int pos,DataType x){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”插入位置错误”;return;}InitList(&q);q->next=p->next;p->next=q;q->data=x;}//销毁链表void DestoryList(LinkList L){LinkList t;while(L){t=L;L=L->next;free(t);}}//遍历链表void TraverseList(LinkList L){LinkList t=L;while(L){t=t->next;cout<<t->data<<” ”;}cout<<endl;}//删除元素void DeleteList(LinkList L,int pos){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”删除位置错误!!”;return;}q=p->next;p->next=q->next;free(q):}第三章栈和队列1.栈(1)栈的结构与定义(2)顺序栈操作算法:入栈、出栈、判断栈空等(3)链栈的结构与定义2.队列(1)队列的定义----------------------------------------------------------------------------------------------------------------1、一个栈的入栈序列为“ABCDE”,则以下不可能的出栈序列是()A. BCDAEB. EDACBC. BCADED. AEDCB2、栈的顺序表示仲,用TOP表示栈顶元素,那么栈空的条件是()A. TOP==STACKSIZEB. TOP==1C. TOP==0D. TOP==-13、允许在一端插入,在另一端删除的线性表称为____队列____。

数据结构学习复习提纲

数据结构学习复习提纲

数据结构学习复习提纲
一、算法
1、定义算法:算法是一个有效的求解一些问题的一系列指令的集合,它是由一些可以执行的操作组成的一个有序序列,只要按正确的顺序进行
安排,就能解决问题。

2、算法分类:根据执行方式,算法可分为顺序算法、选择算法、分
支算法、循环算法等;根据具体操作,算法可分为检索算法、排序算法、
图算法、数论算法、动态规划等。

3、算法时间复杂度:时间复杂度指的是算法的执行效率,即算法在
给定的输入量时所需的时间。

算法时间复杂度可以用大O表示法来描述,
其常见分为O(1)、O(logN)、O(N)、O(NlogN)和O(N^2)等。

二、数据结构
1、定义数据结构:数据结构是指把数据元素相互关联,组织在一起
形成一个整体,它是一个计算机中存储、组织数据的方法。

2、数据结构分类:根据数据间关系,数据结构可分为线性结构和非
线性结构;根据存储模式,数据结构可分为顺序存储结构和链式存储结构;根据逻辑结构,数据结构可分为简单结构、树形结构、图形结构等。

3、数据结构实现:数据结构的实现一般采用顺序表和链表两种形式。

数据结构复习提纲

数据结构复习提纲

1.数据元素是数据的基本单位,可有若干数据项组成,数据项是具有独立含义的最小标识单位,数据对象是具有相同性质的数据元素的集合,是数据的子集。

2.数据结构是带有结构的数据元素的集合,一般包括以下三方面内容:数据的逻辑结构、数据的存储结构、数据的运算①数据元素之间的逻辑关系,也称数据的逻辑结构,数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。

②数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。

数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。

③数据的运算,即对数据施加的操作。

最常用的检索、插入、删除、更新、排序等。

3.数据的逻辑结构分类: 线性结构和非线性结构①线性结构:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

线性表是一个典型的线性结构。

栈、队列、串等都是线性结构。

②非线性结构:一个结点可能有多个直接前趋和直接后继。

数组、广义表、树和图等数据结构都是非线性结构。

4.数据的四种基本存储方法: 顺序存储方法、链接存储方法、索引存储方法、散列存储方法(1)顺序存储方法:该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。

通常借助程序语言的数组描述。

(2)链接存储方法:该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。

通常借助于程序语言的指针类型描述。

(3)索引存储方法:该方法通常在储存结点信息的同时,还建立附加的索引表。

索引表由若干索引项组成。

若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引,稠密索引中索引项的地址指示结点所在的存储位置。

若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引稀疏索引中索引项的地址指示一组结点的起始存储位置。

索引项的一般形式是:(关键字、地址)关键字是能唯一标识一个结点的那些数据项。

数据结构复习提纲

数据结构复习提纲

一、1.数据元素是数据的基本单位。

2.在一个单链表中,若删除p所指结点的后继结点,则执行p->next=p->next->next; 3.在循环双链表的p所指结点之后插入s所指结点的操作是s->prior=p; s->next=p->next; p->next->prior=s; p->next =s;4.若希望从链表中快速确定一个结点的前驱,则链表最好采用双向链表方式。

5.设有50行的二维数组A[50][60],其元素长度为4字节,按行优先顺序存储,基地址为200,则元素A[18][25]的存储地址为 4376 。

6.广义表(a,b,(c,(d)))的表尾是 (b,(c,(d))) 。

7.队列的特点是先进先出。

8.设计一个判别表达式中左、右括号是否配对出现的算法,采用栈数据结构最佳. 9.判定一个循环队列QU(maxsize=m0)为满队列的条件是QU->front= = (QU->rear+1) %m0 。

10.树最适合用来表示元素之间具有分支层次关系的数据。

11.在二叉树的第i层上至多有 2i-1个结点(i≥1)。

12.对于完全二叉树中的任一结点,若其右分支下的子孙的最大层次为h,则其左分支下的子孙的最大层次为 h或h+1 。

14.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的先序遍历序列是cedba 。

15.在线索二叉树中,一个结点是叶子结点的充要条件为它的左、右线索标志均为1 。

16.若一棵二叉树中度为l的结点个数是3,度为2的结点个数是4,则该二叉树叶子结点的个数是 5 。

17.由权值分别为3、8、6、2、5的叶子结点生成一棵哈夫曼树,它的带权路径长度为 55 。

18.无向图的邻接矩阵是一个对称矩阵。

19具有n个顶点的无向图最多有 n(n-1)/2 条边。

20.具有5个顶点的无向图至少应有 4 条边才能确保是一个连通图。

数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳

第一章数据结构概述基本概念与术语1.数据:数据是用来描述现实世界的文字,字符,图像,声音,以及能够输入到计算机中并能被计算机处理的符号。

2.数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。

(补充:一个数据元素可由若干个数据项组成。

数据项是数据的不可分割的最小单位。

)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

(有时候也叫做属性。

)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。

数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。

依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:a.集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。

b.线性结构:结构中的数据元素之间存在“一对一“的关系。

若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。

c.树形结构:结构中的数据元素之间存在“一对多“的关系。

若数据为非空集,则除了第一个元素(根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。

d.图状结构:结构中的数据元素存在“多对多”的关系。

若结构为非空集,折每个数据可有多个(或零个)直接后继。

(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。

想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。

逻辑结构可以映射为以下两种存储结构:a.顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。

b.链式存储结构:借助指针表达数据元素之间的逻辑关系。

不要求逻辑上相邻的数据元素物理位置上也相邻。

5.时间复杂度分析:a.常量阶:算法的时间复杂度与问题规模n无关系T(n)=O(1)b.线性阶:算法的时间复杂度与问题规模n成线性关系T(n)=O(n)c.平方阶和立方阶:一般为循环的嵌套,循环体最后条件为i++时间复杂度的大小比较:O(1)< O(log 2 n)< O(n )< O(n log 2 n)< O(n2)< O(n3)< O(2 n )<O(n!)<O(n n)6.算法与程序:(1)算法的5个特性a、输入:有零个或多个输入b、输出:有一个或多个输出c、有穷性:要求序列中的指令是有限的;每条指令的执行包含有限的工作量;整个指令序列的执行在有限的时间内结束。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构复习提纲复习内容:基本概念掌握:数据结构,逻辑结构,存储结构;数据类型;算法;T(n),S(n)的理解。

要学习的数据结构定义形式:n(n>=0)个数据元素的有限集合。

将约束:1、数据元素本身。

2、数据元素之间的关系。

3、操作子集。

大多有两种存储(表示、实现)方式:1、顺序存储。

2、链式存储。

一、线性结构:1、线性表:n(n>=0)个相同属性的数据元素的有限序列。

12种基本操作。

顺序表:9种基本操作算法实现。

单链表:11种基本操作算法实现。

(重点:插入、删除)顺序表与单链表之时间性能、空间性能比较。

循环链表:类型定义与单链表同。

算法实现只体现在循环终止的条件不同。

双向链表:重点插入、删除算法。

2、操作受限的线性表有:栈、队列。

栈:顺序栈;链栈(注意结点的指针域指向)。

(取栈顶元素、入栈、出栈)队列:循环队列(三个问题的提出及解决);链队列(注意头结点的作用)。

(取队头元素、入队、出队。

链队列中最后一个元素出队)3、数据元素受限的线性表有:串、数组、广义表。

串:定长顺序存储;堆分配存储。

块链存储(操作不方便)数组:顺序存储。

特殊矩阵的压缩存储;稀疏矩阵(三元组表示、十字链表)广义表:长度、深度。

取表头(可以是原子也可以是子表);取表尾(肯定是子表)。

链式存储。

二、树型结构:1、树:n(n>=0)个数据元素的有限集合。

这些数据元素具有以下关系:……。

(另有递归定义。

)术语;存储(双亲表示、孩子表示、孩子双亲表示、孩子兄弟表示)。

2、二叉树:n(n>=0)个数据元素的有限集合。

这些数据元素具有以下关系:……。

(另有递归定义)5个性质(理解、证明;拓展)。

遍历二叉树(定义、序列给出、递归算法、非递归算法);遍历二叉树应用:表达式之前序表达式、后序表达式、中序表达式转换。

线索二叉树(中序线索二叉树)。

树森林与二叉树的转换。

树与森林的遍历。

赫夫曼树及其应用:定义、构造、赫夫曼编码。

三、图形结构:n(n>=0)个数据元素的有限集合。

这些数据元素具有以下关系:……。

术语掌握。

存储结构(数组表示法、邻接表;无向图的邻接多重表)。

图的遍历及应用:无向图的最小生成树(普里姆算法、克鲁斯卡尔算法);拓扑排序、关键路径。

四、查找(查找表):相关概念掌握。

静态查找表:顺序表的查找;有序表的查找;动态查找表:二叉排序树、A VL树的定义及调整。

哈希表:定义及概念;HASH函数;五、内部排序:概念掌握。

插入排序:直接插入排序、折半插入排序、希尔排序交换排序:起泡排序、快速排序选择排序:冒泡、简单选择排序归并排序(外部排序基础)基数排序(链式基数排序)要求:1、排序算法。

2、各种排序算法的O(n)、稳定性。

模拟卷一、填空题1、在用于表示有向图的邻接矩阵中,对第i行的元素进行累加,可得到第i 个顶点的(出)度,而对第j列的元素进行累加,可得到第j个顶点的(入)度。

2、一个连通图的生成树是该图的(极小)连通子图。

若这个连通图有n个顶点,则它的生成树有(N-1)条边。

3、对算法从时间和空间两方面进行度量,分别称为()、()分析。

4、二叉树第i层上最多有( 2i-1 )个结点。

一个二叉树中每个结点最多只有( 2 )个孩子。

5、一棵二叉树有67个结点,这些结点的度要么是0,要么是2。

这棵二叉树中度为2的结点有()个。

6.设一棵二叉树结点的先根序列为A BDECFGH,中根序列为DEBAFCHG,则二叉树中叶子结点是()7.设栈S和队列Q的初始状态皆为空,元素a1,a2,a3,a4,a5和a6依次通过一个栈,一个元素出栈后即进入队列Q,若6个元素出队列的顺序是a3,a5,a4,a6,a2,a1则栈S至少应该容纳( 4 )个元素。

8、循环队列判断队满的条件为()。

9、将两个长度分别m和n(m>n)的排好序的表归并成一个排好序的表,至少要进行(n )次键值比较。

10. 已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点,则该树中含有的叶子结点的数目为((2+NK-2N)/K。

)。

度:一个结点含有的子树的个数称为该节点的度;公式:一个有限图中,各点的度数总和是边数的2倍;而树中的边数为点数减1。

设有x个叶节点,那么分支节点数为N-x各点度数总和为:x*0+(N-x)*K=2*(N-1);最后计算得到叶节点个数为(2+NK-2N)/K。

11. 采用散列技术实现散列表时,需要考虑的两个主要问题是:构造( )和解决( )。

12. 试计算下面程序段时间复杂度( )。

for(i = 1; i <= n; i++)for(j = 1; j<=i; j++)x = x + delta;13. 已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有( )个叶子结点。

出度=入度。

一个结点的度是指它的儿子结点的个数,因此实际是指它的出度。

而每个结点的入度有且仅有一个(根结点入度为0,除外)。

叶子结点的出度为0。

据此可得:入度=结点个数-1;设叶子结点数为X个,则根据题意,入度=X+4+2+2+1-1=X+8;出度=0×X+1×4+2×2+3×2+4×1=18;(结点×结点度数)故X+8=18 X=10;14. G是一个非连通无向图,共有28条边,则该图至少有( 9 )个顶点。

假设有8个顶点,则8个顶点的无向图最多有28条边且该图为连通图连通无向图构成条件:边=顶点数*(顶点数-1)/2顶点数>=1,所以该函数存在单调递增的单值反函数所以边与顶点为增函数关系所以28个条边的连通无向图顶点数最少为8个所以28条边的非连通无向图为9个(加入一个孤立点)15. 己知有序表为(12,18,24,35,47,50,62,83,90,115,134),当用折半查找方法查找90时,需比较( )次查找成功,47需比较( )次查找成功,查100时,需比较_( )次才能确定不成功。

二、选择题:1.下列有关线性表的叙述中,正确的是(a )A、线性表中的元素之间隔是线性关系B、线性表中至少有一个元素C、线性表中任何一个元素有且仅有一个直接前趋D、线性表中任何一个元素有且仅有一个直接后继2.分别用front和rear表示顺序循环队列的队首和队尾指针,则判断队空的条件是___.A.front+1==rearB.(rear+1) % maxSize == frontC.front==0D.front==rear3.下列关于串的叙述中,正确的是( )A、一个串的字符个数即该串的长度B、一个串的长度至少是1C、空串是由一个空格字符组成的串D、两个串S1和S2若长度相同,则这两个串相等4.设结点x和结点y是二叉树T中的任意两个结点,若在先根序列中x在y之前,而在后根序列中x在y之后,则x和y的关系是( )A、x是y的左兄弟B、x是y的右兄弟C、x是y的祖先D、x是y的后代5. 广义表A=( a, b, ( c, d ), ( e, ( f, g ) ) ),则Head( Tail( Head( Tail( Tail( A ) ) ) ) ) 的值为.A. (g)B. (d)C. cD. d6. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是()A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 27. 一棵完全二叉树上有1001个结点,其中叶子结点的个数是( D )A.250 B.500 C.254 D.501对于满二叉树来讲,高度为9得总结点数是511个,高度为10得总结点数是1023个。

这样题目中要求的完全二叉树应是高度为10的完全二叉树,完全二叉树的叶结点在最下面两层,本题中就是在第9、第10两层出现。

第10层叶结点数目是:1001-511=490(即总结点数-前9层结点的总数目)。

第9层叶结点数目是:对于满二叉树,第10层的结点数应该是512个,而现在的完全二叉树的第10层有490个结点,相对于完全二叉树少了22个结点,少的这22个结点将导致第9层出现22/2=11个叶结点。

所以这棵完全二叉树得总的叶子结点数是:490+11=501。

8. 三维数组A[5][6][7]按行优先存储方法存储在内存中,若每个元素占2个存储单元,数组元素下标从0开始,且数组中第一个元素的存储地址为120,则元素A[4][4][5]的存储地址为()A. 518B. 520C. 522D. 5249. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( C )存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表选择C,明显带头节点的双向链表,查找尾元素最简单。

这样插入元素最为方便。

10. 在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为(A)A. n-i+1B. n-iC. iD. i-1(1)顺序表中访问任意一个结点的时间复杂度均为0(1)(2)在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为0(n).(3)在一个长度为n的顺序表中删除第i个元素,要移动n-i个元素。

(4)在一个长度为n的顺序表,如果要在第i个元素前插入一个元素,要后移n-i+1。

(5)等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数为n/2.(6)等概率情况下,在有n个结点的顺序表上做删除结点运算,需平均移动结点的数目为(n-1)/2.11. 已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。

A.CBEFDA B.FEDCBA C.CBEDFA D.不定已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历是什么?先序遍历的第一个结点是根结点,所以A是根,然后在中序遍历中找到A,(DBGE)A(CHF),由中序遍历的定义知(DBGE)是左子树的中序遍历,(CHF)是右子树的中序遍历。

然后在先序遍历中把左子树和右子树划开,A(BDEG)(CHF),所以B是左子树根,C是右子树根。

然后继续在中序遍历中找到B和C,((D)B(GE))A(C(HF))。

对于DBEG,B是根,D是左子树,EG是右子树的中序遍历,对于CHF,C是根,H F是右子树的中序遍历。

因为仍然有没划分完的部分,所以继续看先序。

对于BDEG,B是根已知,D是整个左子树已知,所以EG是右子树的先序遍历,E是右根,再对照中序可知G是E 的左子树,CHF同理。

所以树的结构是A(B(D,E(G,)),C(,F(H,)))把它画成图,后序遍历就是DGEBHFCA12. 一个n个顶点的连通无向图,其边的个数至少为(A )。

相关文档
最新文档