数据结构复习资料
- 格式:doc
- 大小:453.50 KB
- 文档页数:13
数据结构复习资料(亲自整理)1、链表是一种存储数据的链式结构,每个数据之间都是相关联的。
2、线性结构是一个有序数据元素的集合,包括线性表、栈、队列、双队列、数组和串。
3、树是由n(n>=1)个有限节点组成一个具有层次关系的集合,而二叉树是每个结点最多有两个子树的有序树。
二叉树与树的主要差别在于,二叉树结点的最大度数为2,而树中结点的最大度数没有限制;二叉树的结点有左、右之分,而树的结点无左、右之分。
4、堆是一种可以被看做一棵树的数组对象,总是满足某个节点的值总是不大于或不小于其父节点的值,且堆总是一棵完全二叉树。
5、二叉排序树是一种满足以下递归定义的二叉树:若左子树非空,则左子树所有节点的值均小于它的根节点;若右子树非空,则右子树所有节点的值均大于于它的根节点;左右子树也分别为二叉排序树。
1、在已知前序遍历和中序遍历的情况下,可以通过画树的方法求得后序遍历。
具体步骤如下:首先根据前序遍历的特点,确定根节点;然后观察中序遍历,将左子树和右子树分别确定下来;接着对左子树和右子树分别进行递归,直到遍历完所有节点,最后得到后序遍历。
2、树和二叉树之间可以相互转换。
将树转换为二叉树的方法是:对于每个节点,将其第一个孩子作为其左孩子,将其兄弟作为其右孩子。
将二叉树转换为树的方法是:对于每个节点,将其右孩子作为其兄弟。
3、二叉树线索化是将二叉树中的空指针指向该节点在中序遍历中的前驱或后继节点的过程。
在线索二叉树中,一个结点是叶结点的充要条件为:左、右标志均是1.4、邻接表是图的一种链式存储结构,用于表示图中每个节点的邻居节点。
每个节点都有一个链表,存储着与该节点相邻的节点。
邻接表是一种图的存储结构,对于每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边(对于有向图是以该顶点为尾的弧)。
邻接表中的表结点和头结点分别表示边和顶点,包含信息如下:表结点adjvex(邻接点)。
nextarc(指向下一个表结点)(权值等信息);头结点data(顶点信息)和firstarc(指向第一个表结点)。
数据结构复习资料数据结构复习资料数据结构是计算机科学中非常重要的一个领域,它研究的是数据的组织、存储和管理方式。
掌握数据结构的基本概念和常用算法,对于提高程序的效率和性能至关重要。
在这篇文章中,我将为大家提供一些数据结构的复习资料,希望对大家的学习有所帮助。
一、线性结构1. 数组(Array)数组是一种最基本的数据结构,它将一组相同类型的数据元素按照一定顺序存储在连续的内存空间中。
复习数组时,需要掌握数组的定义、初始化、访问和操作等基本操作。
2. 链表(Linked List)链表是一种常见的动态数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
复习链表时,需要了解单链表、双链表和循环链表的定义、插入、删除和遍历等操作。
3. 栈(Stack)栈是一种具有后进先出(LIFO)特性的数据结构,它只允许在栈顶进行插入和删除操作。
复习栈时,需要了解栈的定义、初始化、入栈、出栈和判空等基本操作。
4. 队列(Queue)队列是一种具有先进先出(FIFO)特性的数据结构,它只允许在队尾插入元素,在队头删除元素。
复习队列时,需要了解队列的定义、初始化、入队、出队和判空等基本操作。
二、非线性结构1. 树(Tree)树是一种具有分层结构的数据结构,它由一组节点组成,每个节点可以有零个或多个子节点。
复习树时,需要了解二叉树、平衡二叉树和二叉搜索树的定义、插入、删除和遍历等操作。
2. 图(Graph)图是一种由节点和边组成的数据结构,它用于表示多对多的关系。
复习图时,需要了解图的定义、遍历、最短路径和最小生成树等算法。
三、排序算法排序算法是数据结构中非常重要的一部分,它用于将一组无序的数据按照一定的规则进行排列。
复习排序算法时,需要了解冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序等常见的排序算法,以及它们的时间复杂度和空间复杂度。
四、查找算法查找算法是数据结构中用于在一组数据中查找特定元素的算法。
数据结构复习提纲一、线性表线性表是最基本的数据结构之一,它是具有相同数据类型的 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.设需要对5个不同的记录关键字进行排序,则至少需要比较________次,至多需要比较__________次。
2.设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较_________次。
3.设在长度为20的有序表中进行二分查找,则比较一次查找成功的结点数有_________个,比较两次查找成功有结点数有_________个。
4.数据结构从逻辑上划分为三种基本类型:___________、__________和___________。
5.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。
6.向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度___________。
7.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序过程的时间复杂度为________。
8.在快速排序、堆排序、归并排序中,_________排序是稳定的。
9.在有n个叶子结点的哈夫曼树中,总结点数是_______。
10.一棵树T采用二叉链表存储,如果树T中某结点为叶子结点,则在二叉链表BT中所对应的结点一定_______。
11.3.已知数组A[10][10]为对称矩阵,其中每个元素占5个单元。
现将其下三角部分按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,6]对应的地址是_______。
12.在有n个结点的无向图中,其边数最多为_______。
13.取出广义表A=(x,(a,b,c,d))中原子x的函数是_______。
14.对矩阵采用压缩存储是为了___ ____。
15.带头结点的双循环链表L为空表的条件是_______。
16.设线性表中元素的类型是实型,其首地址为1024,则线性表中第6个元素的存储位置是。
17.对于顺序存储的栈,因为栈的空间是有限的,在进行运算时,可能发生栈的上溢,在进行运算时,可能发生栈的下溢。
数据结构复习资料一、数据结构的基本概念数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
它不仅要考虑数据元素的存储,还要关注数据元素之间的关系以及对这些数据的操作。
数据元素是数据的基本单位,例如整数、字符、字符串等。
而数据项则是数据元素的最小不可分割的部分。
常见的数据结构类型包括线性结构(如数组、链表、栈和队列)、树形结构(如二叉树、二叉搜索树、AVL 树等)、图形结构等。
二、线性结构1、数组数组是一组具有相同数据类型的元素的有序集合。
它的优点是可以通过下标快速访问元素,但插入和删除操作可能比较低效,因为需要移动大量元素。
2、链表链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
链表的插入和删除操作相对简单,但访问特定元素需要遍历链表。
3、栈栈是一种特殊的线性表,遵循后进先出(LIFO)原则。
入栈和出栈操作是栈的基本操作。
4、队列队列遵循先进先出(FIFO)原则,入队和出队操作是队列的主要操作。
三、树形结构1、二叉树二叉树是每个节点最多有两个子节点的树形结构。
它有满二叉树、完全二叉树等特殊形式。
2、二叉搜索树二叉搜索树的左子树的所有节点值小于根节点值,右子树的所有节点值大于根节点值。
这使得查找、插入和删除操作的平均时间复杂度为 O(log n)。
3、 AVL 树AVL 树是一种自平衡的二叉搜索树,通过旋转操作保持树的平衡,从而保证查找、插入和删除的时间复杂度始终为 O(log n)。
四、图形结构图形由顶点和边组成,可以分为有向图和无向图。
常见的算法包括深度优先搜索和广度优先搜索,用于遍历图形。
五、数据结构的操作对于不同的数据结构,常见的操作包括创建、插入、删除、查找、遍历等。
1、插入操作根据数据结构的特点,选择合适的位置插入新元素。
2、删除操作准确找到要删除的元素,并处理删除后的结构调整。
3、查找操作利用数据结构的特性,提高查找效率。
4、遍历操作如前序遍历、中序遍历、后序遍历对于二叉树;深度优先遍历和广度优先遍历对于图形。
复习提纲第一章数据结构概述基本概念与术语(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. 可行性4. 有输入5. 有输出算法的重要特征(1) 有穷性: 算法在有穷步之后结束,每一步在有穷时间内完成。
(2) 确定性: 算法中的每一条指令有明确的含义,无二义性。
(3) 可行性: 可通过已经实现的基本运算执行有限次来实现算法中的所有操作。
算法分析的两个主要方面是分析算法的时间复杂度和空间复杂度。
算法的执行时间主要与问题的规模有关。
问题规模是一个与输入有关的量。
语句频度是指算法中该语句被重复执行的次数。
算法中所有语句的频度之和记作T(n),是该算法所求解问题规模的函数。
当问题规模趋向无穷大时,T(n)的数量级称为渐进时间复杂度,简称时间复杂度,记作T(n)=O(f(n))。
通常采用算法中表示基本运算的语句的频度来分析算法的时间复杂度。
例题:1. 数据结构中的逻辑结构是指(),物理结构是指()。
2. 算法的基本特征包括有穷性、( )、( )、有输入和输出。
3. 算法的有穷性是指()。
4. 算法的确定性是指()。
5. 算法的可行性是指()。
6. 算法分析的两个主要方面是分析算法的()和空间复杂度。
7. 语句频度是指(算法中该语句被重复执行的次数)。
数据结构复习题及答案数据结构习题一、名词解释1.数据、数据元素、数据项、数据结构、数据的逻辑结构、数据物理结构、顺序存储、链式存储、算法、时间复杂度、空间复杂度。
2.线性表、顺序表、单链表、双向链表、循环链表、双向循环链表、三个概念的区别:头指针、头结点、首元结点(第1个元素结点)。
3.栈(顺序栈、链栈)、队列(顺序队、链队)、循环队列、递归、稀疏矩阵、三元组。
4.树、叶子结点、结点的度、树的度、树的高(深)度、二叉树、遍历、满二叉树、完全二叉树、哈夫曼树、WPL、哈夫曼编码。
5.图(有向、无向)、网、边、弧、度、入度、出度、完全图(有向、无向)、(强)连通图(分量)、(最小)生成树、邻接矩阵、邻接表、DFS、BFS。
6.查找表、关键字、静态查找、动态查找、ASL、顺序查找、折半查找、分块查找、二叉排序树。
7、排序、内(外)排序、稳定性、插入(直接、希尔),交换(起泡、快速),选择(直接、堆),2路归并。
一、填空题1.数据结构是研究数据的_逻辑结构__和___物理结构__,并在这种结构上定义相关的运算,设计实现这些运算的算法,分析算法的效率。
算法的效率包括时间和空间两个方面,分别称为___时间复杂度____和__空间复杂度___。
2.数据的基本单元是__数据元素__,数据的最小单元是__数据项_。
3.算法是对特定问题求解___步骤___的一种描述,是指令的有限序列。
4.一个算法的时间复杂度为(3n3+2n—7),其数量级表示为O(n3)_。
5.一个算法具有5个特性:确定性、可行性、有穷性、输入和输出。
6.算法机能的阐发和怀抱,能够从算法的工夫庞大度和空间庞大度来评判算法的好坏。
7.数据的逻辑布局包孕调集布局、线性布局、树形布局和图型布局四品种型。
8.数据布局在计较机中的表示称为数据的物理布局,它能够采用__按次存储___或__链式存储_两种存储方法。
9.线性表有两种存储布局,划分为按次存储和链式存储。
第一章数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。
2.数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。
(补充:一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
(有时候也叫做属性。
)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:1.集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。
2.线性结构:结构中的数据元素之间存在“一对一“的关系。
若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。
3.树形结构:结构中的数据元素之间存在“一对多“的关系。
若数据为非空集,则除了第一个元素(根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。
4.图状结构:结构中的数据元素存在“多对多”的关系。
若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。
逻辑结构可以映射为以下两种存储结构:1.顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2.链式存储结构:借助指针表达数据元素之间的逻辑关系。
不要求逻辑上相邻的数据元素物理位置上也相邻。
数据结构复习资料一.单项选择题1.算法指的是( )。
A .计算方法B .排序方法C .特定问题求解步骤的描述D .调度方法 2.下列数据结构中,( )是非线性结构。
A .栈B .队列C .完全二叉树D .堆3.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。
A .顺序表B .双向链表C .单循环链表D .带头结点的双循环链表 4.队列的操作原则是( )A .先进先出B .后进先出C .先进后出D .不分顺序 5.栈和队列的共同特点是( )。
A .都是先进先出B .都是先进后出C .都是只允许在端点处插入和删除D .没有共同点 6.在一棵高度为k 的满二叉树中,结点总数为( )。
A .2k-1 B .2k C .2k -1 D .⎣⎦12log +k7.在下列存储形式中,哪一个不是树的存储形式?( )A .双亲链表表示法B .孩子链表表示法C .孩子兄弟链表表示法D .顺序存储表示法 8.n 个结点的完全有向图含有边的数目为( )。
A .n*nB .n*(n+1)C .n/2D .n*(n-1) 9.n 个顶点的强连通图至少有( )条边。
A .nB .n-1C .n+1D .n(n-1) 10、高度为k 的二叉树的最大结点数为( )。
A 、2kB 、2k-1C 、2k –1D 、2k-1–1 11、下列哪一种图的邻接矩阵是对称矩阵?( )A 、有向图B 、无向图C 、AOV 网D 、AOE 网 12、在下列存储形式中,哪一个不是树的存储形式?( ) A 、双亲表示法 B 、孩子表示法C 、孩子兄弟表示法D 、顺序存储表示法 13、下面哪一方法可以判断出一个有向图是否有环。
( ) A 、深度优先遍历 B 、拓扑排序C 、求最短路径D 、广度优先遍历 14.适用于折半查找的表的存储方式及元素排列要求为( )。
A .链接方式存储,元素无序 B .链接方式存储,元素有序C .顺序方式存储,元素无序D .顺序方式存储,元素有序 15、一个算法应该是( )。
A 、程序B 、特定问题求解步骤的描述C 、要满足五个基本特性D 、A 和C 16、算法分析的两个主要方面是( )。
A 、空间复杂度和时间复杂度B 、正确性和简明性C 、可读性和文档性D 、数据复杂性和程序复杂性 17、以下数据结构中,( )是非线性数据结构。
A 、树B 、字符串C 、队D 、栈18.下列算法中()不能保证每趟排序至少能将一个元素放到其最终的位置上。
A.快速排序B.希尔排序C.堆排序D.冒泡排序19.采用顺序查找法查找长度为n的线性表,查找成功的平均查找长度为()A.n B.n/2 C.(n-1)/2 D.(n+1)/220.设广义表L = ((a, b, (x, y)), (a, b, (x, y))),则head(head(tail(L)))为()A.a B.(x, y)C.(a, b, (x, y))D.L21、最小生成树指的是()A、由连通网所得到的边数最少的生成树B、由连通网所得到的顶点相对较少的生成树C、连通网中所有生成树中权值之和为最小的树D、连通网的极小连通子图22、对线性表进行折半查找时,要求线性表必须()。
A、以顺序方式存储B、以顺序方式存储,且数据元素有序C、以链接方式存储D、以链接方式存储,且数据元素有序23.下面关于串的叙述中,正确的是()A.一个串的字符个数即为该串的长度B.一个串的长度至少为1C.空串是一个由空格字符组成的串D.两个串s1和s2若长度相同,则这两个串相等24.排序的算法很多,若按排序的稳定性和不稳定性分类,则()是不稳定排序。
A、冒泡排序B、归并排序C、直接插入排序D、希尔排序25.线性表是具有n个()的有限序列。
A.表元素B.字符C.数据元素D.数据项26.栈的操作原则是()A.先进先出B.后进先出C.后进后出D.不分顺序27.下列排序算法中,在待排数据已有序时,花费时间反而最多的是()排序。
A.冒泡排序B.希尔排序C.快速排序D.堆排序28.设无向图的顶点个数为n,则该图最多有()条边A.n-1 B.n(n-1)/2 C.n(n+1)/2 D.n229.队列的操作原则是()A.先进先出B.后进先出C.先进后出D.不分顺序30.以下()不是队列的基本运算。
A.从队尾插入一个新元素B.读取队头元素的值C.判断一个队列是否为空D.从队列中删除第i个元素31、()是数据不可分割的最小单位。
A、数据结构B、数据对象C、数据元素D、数据项32、线性表采用链式存储时,其地址()。
A、必须是连续的B、一定是不连续的C、部分地址必须是连续的D、连续与否均可以33、带头结点的单链表(头指针为head)为空的判定条件是()。
A、head==NULLB、head->next==NULLC、head->next==headD、head!=NULL34.对线性表,在下列()情况下应当采用链表表示。
A.经常需要随机地存取元素B.经常需要插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变35.将含有100个结点的完全二叉树从根这一层开始,每层从左到右依次对结点编号,根结点的编号为1,编号为71的结点的双亲的编号为()。
A.34 B.35 C.36 D.无法确定36.按照二叉树的定义,具有3个结点的二叉树有()种。
A.3 B.4 C.5 D.637.在数据结构中,从逻辑上可以把数据结构分成()A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构38.下面关于串的叙述中,正确的是()A.一个串的字符个数即为该串的长度B.一个串的长度至少为1C.空串是一个由空格字符组成的串D.两个串s1和s2若长度相同,则这两个串相等39.下列广义表是线性表的是()A.L = (x, (x, y), x)B.L = (a, (a, b))C.L = (x, y , z)D.L = (x, L, y)40.n个顶点的强连通图至少有()条边。
A.n B.n-1 C.n+1 D.n(n-1)41.当初始序列已经按键值有序,用直接插入算法对其进行排序,需要比较的次数为()A.n-1 B.n C.log2n D.nlog2n42、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A、单链表B、仅有头指针的单循环链表C、双向链表D、仅有尾指针的单循环链表43、常对数组进行的两种基本的操作是()。
A、建立与删除B、索引和修改C、查找和修改D、查找和索引44.下列广义表是线性表的是()A、L = (x, (x, y), x)B、L = (a, (a, b))C、L = (x, y , z)D、L = (x, L, y)45.采用顺序查找法查找长度为n的线性表,查找成功的平均查找长度为()A.n B.n/2 C.(n-1)/2 D.(n+1)/2二.判断题1.在具有头结点的链式存储结构中,头指针指向链表中的第一个数据结点。
()2.在单链表中要访问某个结点,只要知道该结点的指针即可,因此,单链表是一种随机存取结构。
()3.栈和队列都是线性表,只是在插入和删除时受到了一些限制。
()4.串是一种数据对象和操作都特殊的线性表。
()5.广义表是线性表的推广,是一类线性数据结构。
()6.二叉树中不存在度大于2的结点,当某个结点只有一棵子树时,没有左右子树之分。
()7.将一棵树转化为二叉树后,根结点没有左子树。
()8.有回路的图不能进行拓扑排序。
()9.装填因子是散列表的一个重要参数,它反映散列表的装满程度。
()10.内部排序中的快速排序方法,在任何情况下均可得到最快的排序效果。
()三.填空题1.顺序存储结构是通过表示元素之间的关系的。
2.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是。
3.一个字符串中称为该串的子串。
4.求图的最小生成树有两种算法,算法适合于求边稀疏的网的最小生成树,算法适合于求边稠密的网的最小生成树。
5.栈的特点是,队列的特点是,栈和队列都是操作受限的线性表。
6.对矩阵采用压缩存储的目的是为了。
7.深度为8的完全二叉树至少有个结点。
8.一个无序序列可以通过构造一棵树而变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。
9.按照所涉及的存储设备的不同,排序分为和两大类。
10.一个算法的效率可分为效率和效率。
11.在有向图G中,若任意两个顶点V i和V j都连通,即从V i到V j和从V j到V i都存在路径,则称该图为。
12.在各种查找方法中,其平均查找长度与结点个数n无关的查找方法是13.在单链表p结点之后插入s结点的操作是和。
14.顺序存储结构是通过表示元素之间的关系的。
15.链式存储结构是通过表示元素之间的关系的。
16.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的和记录的。
17.分别采用堆排序、快速排序、冒泡排序和归并排序,对初始状态为有序的表,则最省时间的是算法。
18.空格串是指,其长度等于。
19.有n个叶子结点的哈夫曼树的结点总数为。
20.在哈希表中,装填因子的值越大,则发生的可能性越大。
21.仅允许在表的同一端进行插入和删除运算的线性表被称为。
四.解答题1.已知一棵二叉树如图所示,分别写出它的先序遍历序列、中序遍历序列和后序遍历序列。
2.已知二叉树的后序序列为:HGAEBFC,中序序列为:HBGEACF,要求画出该二叉树。
3、已知完全二叉树的第七层有10个叶子结点,则整棵二叉树的结点数最多是多少?4.列出下图中从顶点1开始的所有拓扑排序序列。
5、已知无向带权图,(1)写出它的邻接矩阵。
(2)从顶点A出发,求它的深度优先搜索遍历的顶点序列。
(3)从顶点A出发,求它的广度优先搜索遍历的顶点序列。
6.下面的邻接表表示一个给定的无向图,请根据邻接表:(1)画出该无向图的图形。
(2)给出以顶点V1为起点的深度优先遍历的顶点序列及对应的生成树。
7.下面的邻接表表示一个给定的无向图,请根据邻接表:(1)画出该无向图的图形。
(2)列出从顶点1出发的深度优先搜索遍历该图所得的顶点序列。
(3)列出从顶点1出发的广度优先搜索遍历该图所得的顶点序列。
8、根据下面所示的无向图,要求(1)画出无向图对应的邻接表;(2)根据无向图,列出从顶点1出发的深度优先和广度优先搜索遍历该图所得的顶点序列。
9.设无向网如下图所示,按克鲁斯卡尔算法求网的最小生成树,要求画出执行过程。
10.假定对长度为11的有序表进行折半查找:(1)画出描述折半查找过程的判定树。
(2)假定每个元素的查找概率相等,求查找成功时的平均查找长度。