天津理工大学数据结构2014复习提纲

合集下载

(完整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)个数据元素的有限集合。

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

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

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)}中缀表达式与后缀表达式规则以及两者间的转换。

数据结构复习提纲

数据结构复习提纲

复习提纲:第一章: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、什么是数据结构,数据结构4种基本结构: “数据结构”是研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算的一门学科。

集合、线性结构、树形结构、图形结构。

2、线性表的顺序存储和链式存储的特点:逻辑关系上相邻的两个元素在物理位置上也是相邻的。

可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式表示。

(因此线性表的顺序存储结构是一种随机存取的存储结构)3、熟悉算法2.3,算法2.4,算法2.5,算法2.7,算法2.8,算法2.11,算法2.12。

4、掌握栈和队列的特点。

5、第4章只考基本概念4.1节,第5章不考。

6、树中的基本概念;二叉树的性质(5个),包括证明。

7、二叉树的顺序存储和链式存储。

(特别是二叉链表)8、二叉树的遍历方法(先序、中序和后续),对任何一棵二叉树能够写出它的先序(中序和后续)序列。

掌握二叉树的先序(中序和后续)的递归算法。

9、掌握算法6.2、算法6.3和算法6.4。

10、掌握线索二叉树的概念,对于任意的一棵二叉树画出它的先序(中序和后续)线索二叉树。

11、掌握算法6.5,算法6.6,算法6.7。

12、掌握树的存储结构(双亲表示法、孩子兄弟表示法),掌握森林与二叉树的转换方法(孩子兄弟表示法)13、掌握哈夫曼树的构造方法,写出其对应的哈夫曼编码。

14、掌握图的基本概念。

掌握图的邻接矩阵、邻接表和逆邻接表表示。

15、掌握图的深度优先搜索和广度优先搜索,针对具体的邻接矩阵(或邻接表)写出其深度优先搜索序列和广度优先搜索序列。

16、掌握利用谱里姆算法和克鲁斯卡尔算法构造最小生成树的过程。

(图7.16和图7.18)17、掌握地杰斯特拉算法和弗洛伊德算法(见书189-190页和191-192页)18、第8章不考19、第9章掌握算法9.1,算法9.2。

什么是二叉排序树,如何生成二叉排序树(见书229页)。

掌握二叉排序树查找分析,即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、允许在一端插入,在另一端删除的线性表称为____队列____。

《数据结构》课程复习资料.doc

《数据结构》课程复习资料.doc

《数据结构》课程复习资料一、填空题:1.设需要对5个不同的记录关键字进行排序,则至少需要比较土次,至多需要比较10次。

2.设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较丄次。

3.设在长度为20的有序表中进行二分查找,则比较一次查找成功的结点数有丄个,比较两次查找成功有结点数有生个。

4.数据结构从逻辑上划分为三种基本类型§线性结构、树型结构和图型结构。

5.在一个具有n个顶点的无向完全图中,包含有n(n-l)/2条边,在一个具有n个顶点的有向完全图中,包含有n(n-l)条边。

6.向一棵B.树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度增加1。

7•在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为0(log2n),整个堆排序过程的时间复杂度为0(nlog2n)。

8.在快速排序、堆排序、归并排序中,归并排序是稳定的。

9.在有n个叶子结点的哈夫曼树屮,总结点数是旷1 °10.—棵树T采用二叉链表存储,如果树T中某结点为叶子结点,则在二叉链表BT中所对应的结点一定左右子树空。

11.已知数组A [ 1 0 ] [ 1 0 ]为对称矩阵,英中每个元素占5个单元。

现将英下三角部分按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A [5, 6]对应的地址是1225 o12.在有n个结点的无向图中,其边数最多为n(n-l)/2。

13.取出广义表A二(x, (a, b, c, d))中原子x的函数是head (A) o14.对矩阵采用压缩存储是为了节省空间。

15.带头结点的双循环链表L为空表的条件是L->next二L->prior 或L-〉next二L。

16.设线性表中元素的类型是实型,其首地址为1024,则线性表屮第6个元素的存储位置是1044。

17.对于顺序存储的栈,因为栈的空间是有限的,在进行入栈(插入)运算时,可能发生栈的上溢,在进行出栈(删除)运算时,可能发生栈的下溢。

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

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

数据结构与算法复习提纲(详细版)数据结构与算法复习提纲第一章引论一、数学知识复习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。

2014数据结构大纲解析

2014数据结构大纲解析

一、数据结构考查目标1. 掌握数据结构的基本概念、基本原理和基本方法。

2. 掌握数据的逻辑结构、存储结构及其基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。

3. 能够运用数据结构的基本原理和方法进行问题的分析和求解,具备采用C或C++语言设计与实现算法的能力。

二、数据结构考点解析2014年计算机统考大纲完全解析系列共由八篇构成,在第一篇中,我们列出了大纲的变化的对比,在第一时间着重对整个考试的性质,考查目标,新大纲的变化以及相应的备考策略做了介绍。

在第二篇我们简单的分析这些变化。

在接下来的四篇中,我们将分别详细解读大纲所规定的四门课程的考查内容,并给出有针对性的复习提示。

今天我们首先来解析一下计算统考大纲数据结构部分及其相关知识点。

数据结构占了45分,和计算机组成原理部分同一个比重,在以往各年计算机专业的研究生入学考试中,几乎没有学校不考查数据结构的内容,而且绝大部分考试中,数据结构这一门都占据了重要的地位,这足以体现计算机专业研究生选拔对数据结构课程的要求之重。

2014年的统考大纲对数据结构的考查目标定位为掌握数据结构的基本概念、基本原理和基本方法;掌握数据的逻辑结构、存储结构及其基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析;能够综合运用数据结构的基本原理和方法进行问题的分析和求解,具备采用C或C++语言设计与实现算法的能力。

这个考查目标与13年大纲的考查目标相比去掉了对java语言设计和实现算法的能力。

要求运用数据结构的基本原理和方法进行分析问题,要求学生能够活学活用,事实上,可以看出研究生入学考试对知识实际应用能力的加强。

大纲仍要求学生具备采用C或C++语言设计与实现算法的能力,但是考生不必因此而专门复习一遍C或C++程序设计,毕竟复习时间有限,而且数据结构要求的重点在于算法设计的能力,而不是编写代码的能力,因此,只要能用类似伪代码的形式把思路表达清楚就行,不用强求写出一个没有任何语法错误的程序。

数据结构复习提纲整理

数据结构复习提纲整理

复习提纲第一章数据结构概述基本概念与术语(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、允许在一端插入,在另一端删除的线性表称为____队列____。

数构复习提纲

数构复习提纲

期末考试题型2014年6月6日星期五22:46一.单选题(含20个小题,每小题2分,计40分)二.简答题(含6个小题,每小题6分,计36分)21.综合比较顺序表和链表的主要特点。

22.将中缀表达式 16 – 9 * ( 4 + 3 ) 转换成对应的后缀表达式(要求按人工操作的步骤分步书写或描述)。

23.设const int N=3,int x[N]={0};void Backtrack(int t) {if(t+1>N) {printf("\n");for(int i=0; i<N; i++) printf("%d",x[i]);}else for(int i=0; i<2; i++) {x[t]=i;Backtrack(t+1);}}试按格式写出调用Backtrack(0) 的运行结果。

24.设二叉树T按照二叉链表存储,试分析下列递归算法的主要功能。

int Leafnode(BiTree T){if(!T) return 0;if(!T->Lchild && !T->Rchild) return 1;return Leafnode(T->Lchild)+Leafnode(T->Rchild);}25.用依次插入关键字的方法,为序列{ 5,4,2,8,6,9 }构造一棵平衡二叉树(要求保留构造过程中的各棵不平衡二叉树)。

26.对关键字序列503,87,512,61,908,170,897,275,653,426分别执行下列排序算法,写出第1趟排序后的关键字序列:(1)冒泡排序;(2)链式基数排序。

三.设计题(含2个小题,每小题12分,计24分)27.给定两个带头结点的链表La和Lb,试设计一个高效的算法,将La中自第i个结点起的m个结点,移到Lb中的第j个结点之前。

返回链表La和Lb。

28.设计一种二进制编码,使传送数据 a,act,case,cat,ease,sea,seat,state,tea的二进制编码长度最短。

2014理工大考研专业课数据结构真题(回忆版)

2014理工大考研专业课数据结构真题(回忆版)
5、什么是广义表?广义表和线性表的区别是什么?
算法分析(2*8=16)
1、
void fun(int r[],int n,int x)
{
r[0]=x;
int i=n;
while(r[i]!=x)
{
i--;
}
}
求此函数的循环次数与哪些变量有关系?若该数组是递增排列的,有没有效率更高的方法(二分查找)?求此方法查找成功时平均查找长度,查找失败时平均查找长度
3、写一克鲁斯卡尔算法求最小生成树
问答(5*6=30)
1、什ቤተ መጻሕፍቲ ባይዱ是算法?要求是什么?出了正确性以外最重要的是什么?复杂度有哪些方面?
2、队列有什么特点?什么是循环队列?循环队列有哪些优点?
3、求一个序列中最小值和最大值,有没有比2n-3更少比较次数的方法?求此方法最坏情况时的比较次数
4、若一个完全二叉树第七层有10个叶子节点,求该二叉树一共有多少个节点
2、int fib(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
return fib(n-1)+fib(n-2);
}
求f(5)返回值是多少多少?并求时间复杂度和空间复杂度
大题(5*10=50)
1、求哈夫曼编码
2、哈希表,求余法,二次散列法,查找成功时平均查找长度,查找失败时平均查找长度
3、求字符串next函数
4、求一个序列中,101是第几小的数字
5、求事件最早开始时间,最晚开始时间,关键路径
编程题(3*18=54)
1、删除线性表中重复的元素,且不能改变原来元素顺序

数据结构复习提纲

数据结构复习提纲

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构复习提纲。带所有答案

数据结构复习提纲。带所有答案

数据结构复习提纲一,选择题1.数据结构是指(A)。

A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(C)。

A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3.设语句x++的时间是单位时间,则以下语句的时间复杂度为(B)。

for(i=1; i<=n; i++)for(j=i; j<=n; j++)x++;A.O(1)B.O(2n)C.O(n)D.O(3n)4.计算机内部数据处理的基本单位是(B)。

A.数据B.数据元素C.数据项D.数据库-------25.在一个长度为n的顺序表中删除第i个元素(1<=i<=n)时,需向前移动A个元素。

A.n-i B.n-i+l C.n-i-1 D.i6. 线性表采用链式存储时,其地址___ D___。

A.必须是连续的B.一定是不连续的C.部分地址必须是连续的D.连续与否均可以7.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较__C个元素结点。

A.n/2 B.n C.(n+1)/2 D.(n-1)/2 8.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是D __。

A. p->next=s; s->prior=p;p->next->prior=s; s->next=p->next;B. s->prior=p; s->next=p->next;p->next=s; p->next->prior=s;C. p->next=s; p->next->prior=s;s->prior=p; s->next=p->next;D. s->prior=p; s->next=p->next;p->next->prior=s; p->next=s;9.设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为A。

天津理工大学-2014-2015数据库复习

天津理工大学-2014-2015数据库复习

第一章绪论基本概念1.数据:数据是数据库中存储的基本对象,描述食物的符号纪录成为数据。

P1-22.数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合。

P23.数据库管理系统:是位于用户与操作系统之间的一层数据管理软件,作用是科学的组织和存储数据,高效获取和维护数据。

P4-54.数据库系统:是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。

(在一般不引起混淆的情况下常常把数据库系统简称为数据库。

)P55.实体:客观存在并可相互区别的事物称为实体。

P146.实体型:具有相同属性的实体必然具有共同的特征和性质。

用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。

例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。

P157.实体集:同一类型实体的集合称为实体集。

例如,全体学生就是一个实体集。

P158.关系:一个关系对应通常说的一张表,如图中这张学生登记表:P289.属性:表中的一列即为一个属性,给每一个属性起一个名称即属性名。

如这张表有6列,对应6个属性(学号,姓名,年龄,性别,系名和年级)。

P2810.码:也称为码键。

表中的某个属性组,它可以唯一确定一个元组,如学号,可以唯一确定一个学生,也就成为本关系的码。

P2911.元组:表中的一行即为一个元组。

P2812.域:属性的取值范围,如人的年龄一般在1-150岁之间,大学生的年龄属性的域是(14-38),性别的域是(男,女),系名的域是一个学校所有系名的集合。

P2913.关系模式:对关系的描述,一般表示为P29关系名(属性1,属性2,…,属性n)例如,上面的关系可描述为学生(学号,姓名,年龄,性别,系名,年级)简述问题1.三级模式:数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,如图:P322.两级映像:外模式/模式映像,模式/内模式映像。

天津理工大学数据结构期末考试复习题

天津理工大学数据结构期末考试复习题

(2)根据上述要求,采用 C 或 C++语言编写算法,实现相应功能。 (15 分)
/*bt 为根结点的指针*/
/*初始化栈 s 为空栈*/ /*栈 s 不为空*/
while(p || !empty(s)) if(p) { push (s,p);
; } /*P 入栈*/
Hale Waihona Puke else { p=pop(s); printf(“%c”,p->data); ; } }
(2)以下程序为求二叉树深度的递归算法,请填空使之完善。
n
2. 设一个栈的输入序列是 1,2,3,4,5, 则下列是栈的合法输出序列的是( A. C. 5 1 2 3 4 4 3 1 2 5 B. D. 4 5 1 3 2 3 2 1 5 4
3. 最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队列为空的条件是( A. (rear+1) mod n=front C.rear+1=front B. rear=front D. (rear-l) mod n=front ) 。
) 。
4. 在双向链表指针 p 的结点前插入一个指针 q 的结点操作是( A. B. C. D.
p->Llink=q; q->Rlink=p; p->Llink->Rlink=q; q->Llink=q; p->Llink=q; p->Llink->Rlink=q; q->Rlink=p; q->Llink=p->Llink; q->Rlink=p; q->Llink=p->Llink; p->Llink->Rlink=q; p->Llink=q; q->Llink=p->Llink; q->Rlink=q; p->Llink=q; p->Llink=q; )存储方

天津理工大学2014-2015计算机组成原理复习

天津理工大学2014-2015计算机组成原理复习

第一章计算机系统概论理解:计算机软硬件概念;P31.所谓“硬件”,是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成,如主机、外部设备等。

2.所谓“软件”,它看不见摸不着,由人们事先编制的各种具有各类特殊功能的程序组成。

理解:计算机系统的层次结构;掌握:计算机的基本组成;冯·诺依曼计算机的特点;1.计算机组成是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。

P72.冯诺依曼计算机的特点P8(1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。

(2)指令和数据均用二进制数表示。

(3)指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。

(4)指令在存储器内按顺序存放。

通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。

(5)机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。

掌握:高级语言、汇编语言、机器语言各自的特点1.高级语言:这类语言对问题的描述十分接近人们的习惯,并且还具有较强的通用性。

2.汇编语言:用符号表示操作,并用符号表示指令或数据所在存储单元的地址,使程序员可以不再使用繁杂而又易错的二进制代码来编写程序。

3.机器语言:用户必须用二进制代码来编写程序。

要求程序员对他们所使用的计算机硬件及其指令系统十分熟悉,编写程序难度很大,操作过程也极容易出错。

掌握:计算机的硬件框图及工作过程;掌握:计算机硬件的主要技术指标。

1.机器字长:指CPU一次能处理的数据的位数,通常与CPU的寄存器位数有关。

2.存储容量=存储单元个数X存储字长。

3.运算速度:第二章计算机的发展及应用了解:计算机的产生、发展及应用1.电子管计算机、晶体管计算机、集成电路计算机、大规模和超大规模集成电路计算机。

掌握:摩尔定律及其应用范围第三章系统总线12(选择、填空)理解:总线的基本概念;总线上信息的传送(点对点传输、广播传输、串行传输、并行传输)1.总线:是连接多个部件的信息传输线,是各部件共享的传输介质。

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

数据结构期末复习范围第一章算法与程序1、何谓算法?简述算法的基本特性和表示方法。

2、如何评价一个算法?简述环路复杂度、空间复杂度和时间复杂度的概念。

3、简述算法与程序的联系与区别,并列举常用的算法设计方法。

第二章常用数据结构1、数据类型与数据结构的联系与区别是什么?2、数据类型的6个显著特征是什么?3、举例说明数据结构的逻辑结构、数据的存储结构和数据的运算三个方面的内容。

4、什么是线性结构?什么是非线性结构?举例说明。

第三章简单数据结构1、线性表可用顺序表和单链表作为存储结构。

问:●两种存储表示各有哪些主要优缺点?●如果有n个表同时并存,且处理过程中各表的长度会动态发生变化,表的总数也可能自动改变;在此情况下应选用哪种存储表示?为什么?●若表的总数基本稳定,且很少插入和删除,但要求以最快速度存取表中元素;这是应采取哪种存储表示?为什么?2、设有一个栈,元素的进栈次序依次为A、B、C、D、E,问能否得到下面的出栈序列?若能请写出操作序列,若不能请说明原因?●C、E、A、B、D●C、B、A、D、E●D、C、A、B、E●A、C、B、E、D`●A、B、C、D、E●E、A、B、C、D3、已知表达式的中缀表示为(A+B)*D+E/(F+A*D)+C,利用栈把它改写成为后缀表示,并写出转换过程中栈的变化。

4、何为队列的上溢现像?解决方法有哪些?各种方法的工作原理是什么?第四章树与二叉树1、已知一棵树边的集合为{(I,M),(I,N),(E,I),(B,E),(B,D),(A,B),(G,J), (G,K),(C,G),(C,F),(H,L),(C,H),(A,C)},请画出这棵树并回答如下问题:●那个是根结点?●那些是叶子结点?●那个是结点G的双亲?●那些是结点G的祖先?●哪些是结点G的孩子?●哪些是结点E的子孙?●哪些是结点E的兄弟?哪些是结点F的兄弟?●结点B和结点N的层次号分别是多少?●树的深度是多少?树的度是多少?●以结点C为根的子树的深度是多少?2、分别画出有三个结点的树和有三个结点的二叉树的所有不同形态。

3、已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,问该树中有多少叶子结点?4、一棵深度为h的满k叉树是这样的一棵树,他的第h层上的结点全部是叶子结点,其余各层上的每个结点都有k可非空子树。

如果对深度为h的满k叉树按层次自上而下,同层次自左至右的顺序从1开始对所有结点编号,问:●各层的结点数目是多少?●编号为n的结点的双亲结点若存在,其编号是多少?●编号为n的结点的第i个孩子结点若存在,其编号是多少?●编号为n的结点有右兄弟的条件是什么?其右兄弟编号是多少?4、一棵含有n个结点的k叉树,可能达到的最大深度和最小深度各为多少?5、对于下图所示的一棵二叉树,分别写出:●前序遍历序列●中序遍历序列●后序遍历序列●层次遍历序列6、已知一棵二叉树的前序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK。

请画出该二叉树,并写出它的后序序列和层次序列。

7、已知一棵二叉树的后序序列为DCEGBFHGIKJ,中序序列为DCBGEAHFIJK。

请画出该二叉树,并写出它的前序序列和层次序列。

8、已知一棵二叉树的层次序列为ABCDEFGHIJ,中序序列为DBGEHJACIF。

请画出该二叉树,并写出它的前序序列和后序序列。

9、把下图所示的两棵树,分别转化为相应的二叉树。

P12610、把下图所示的森林转化为相应的一棵二叉树。

P12711、把下图所示二叉树转化为相应的树,然后分别写出其先根序列和后根序列。

P12712、给定一个权重集合为W={3,15,17,14,6,16,9,2},请画出相应的哈夫曼树,并计算其带权路径长度WPL。

13、已知二叉树以二叉链表作为存储结构,编写按层次遍历该二叉树的算法。

14、已知二叉树以二叉链表作为存储结构,编写按前序遍历该二叉树的算法。

第五章图与网1、对如下有向图给出其邻接矩阵、邻接表和逆邻接表,并计算每个顶点的度。

P159 图5-34(a)2、对如下有向图给出其邻接矩阵、邻接表和逆邻接表,并计算每个顶点的度。

P159 图5-34 (b)3、对下图分别给出:⑴深度优先搜素遍历序列和深度优先生成树;⑵广度优先搜素遍历序列和广度优先生成树;⑶用Prim算法求得最小生成树的过程;⑷用Kruskal算法求得最小生成树的过程。

P159 图5-354、对下图分别给出:⑴邻接矩阵;⑵用Dijkstra算法求从v1出发到各顶点的最短路径。

P159 图 5-365、用Floyd算法求下图中每对顶点间的最短路径。

P159 图 5-376、用邻接矩阵表示图时,若图中有100个顶点和100条边,则形成的邻接矩阵中有多少个元素?有多少个非零元素?是否为稀疏矩阵?7、用邻接矩阵表示图时,矩阵中元素的个数与顶点个数是否相关?与边的条数是否相关?8、有n个顶点的无向连通图至少有多少条边?有n个顶点的有向强连通图至少有多少条边?9、对于有n个顶点的无向图,若采用邻接矩阵表示如何判断以下问题:⑴图中有多少条边?⑵任意两个顶点i和j之间是否有边相连?⑶任意一个顶点的度是多少?第六章数据结构的程序实现1、阐述数据结构在问题建模中的重要作用。

第七章检索与基本算法1、若对大小为n的顺序表和有序表分别进行顺序检索,在等概率的前提下,工况时的平均检索长度是否相同:⑴检索不成功,即表中没有关键字值等于给定值k的记录;⑵检索成功,表中只有一个关键字值等于给定值k的记录;⑶检索成功,表中有若干个关键字值等于给定值k的记录,依次检索要求能全部找出所有关键值等于给定值k的记录。

2、对长度为20的有序表进行二分法检索,画出他的一棵判定树,并求出在等概率情况下检索成功和不成功时的平均检索长度。

3、对于10000个项的线性表,若采用等分区间顺序检索方法进行检索,问:⑴每块的理想长度为多少?此时把线性表划分成多少个块?⑵平均检索长度为多少?假定在等概率情况下讨论。

⑶若每块长度为40,请平均检索长度为多少?4、设结点序列为(60,30,90,50,120,70,40,80),用二叉检索树的插入算法,画出按此结点序列建立的一棵二叉检索树T1;再用二叉检索树的删除算法,画出依次删除结点40,70,60之后的二叉检索树T2。

5、已知长度为12的表如下所示:(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)⑴按表中元素的顺序依次插入一棵初始为空的二叉检索树中,画出最终的二叉检索树,并求在等概率情况下检索成功时的平均检索长度。

⑵若先对表中元素排序成有序表,求在等概率情况下进行二分法检索时检索成功的平均检索长度。

⑶构造一棵二叉平衡树,求在等概率情况下进行二分法检索时检索成功的平均检索长度。

6、具有n个结点的二叉检索树有多少种不同的形态?一个高度为h的二叉平衡树至少有多少个结点?具有n个结点的二叉平衡树的最大高度和最小高度各是多少?7、给定关键字序列为(19,14,23,1,68,20,84,27,55,11,10,79),设哈希表长为13,哈希函数为h(k)=k%13:⑴画出用线性探索法消除地址冲突时所构造的哈希表。

⑵画出用链地址法消除地址冲突时所构造的哈希表。

⑶并求出以上两种哈希表的平均检索长度。

8、设计一个算法,求出指定结点在二叉检索树中的层次数。

第八章排序与基本算法1、什么是排序?什么是内排序?什么是外排序?2、给定排序码序列为(17,8,21,35,32,15,21,25,12,23),分别写出:●直接插入排序●希尔排序(增量为5,2,1)●二路插入排序●折半插入排序●共享栈插入排序●冒泡排序●快速排序●直接选择排序●树形选择排序●堆排序●二路归并排序●基数排序3、在冒泡排序方法中,什么情况下排序码会朝着与最终位置相反的方向移动?是举例说明。

4、对于n个排序码进行快速排序时,所需的比较次数与排序码的初始序列有关。

当n=7时,回答下列问题:⑴在最好的情况下需要进行多少次比较?请说明理由。

⑵给出在最好情况下的排序码初始序列的一个实例。

⑶在最坏的情况下需要进行多少次比较?请说明理由。

⑷给出在最坏情况下的排序码初始序列的一个实例。

5、写出快速排序的非递归算法,并回答下面问题:⑴在非递归实现排序快速排序时,通常要用一个栈来保存待排序区间的两个端点。

这个栈能否用队列来代替?为什么?⑵在非递归实现排序快速排序时,可根据基准把待排序区间分割为两个区间。

若下一趟先对较短的区间进行排序。

证明在这种情况下快速排序所需栈的深度为O(nlogn)。

6、若排序码有11个,为了完成树形选择排序,至少需要进行多少次关键字值的比较?7、判断下列序列是否为堆。

若不是堆则把它们调整为堆:●(100,85,98,77,80,60,82,40,20,10,66)●(100,98,85,82,80,77,66,60,40,20,10)●(100,85,40,77,80,60,66,98,82,10,20)●(10,20,40,60,66,77,80,82,85,98,100)8、希尔排序、直接选择排序、快速排序、堆排序都是不稳定的排序方法,举例说明。

相关文档
最新文档