数据结构A复习要点及样题(南邮)

合集下载

数据结构复习题及答案5篇

数据结构复习题及答案5篇

数据结构复习题及答案5篇第一篇:数据结构复习题及答案、数据结构复习题及答案中南大学现代远程教育课程考试(专科)复习题及参考答案数据结构一、判断题:1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。

()2.链式存储在插人和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。

()3.在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。

()4.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。

()5.如果两个串含有相同的字符,则这两个串相等。

()6.数组可以看成线性结构的一种推广,因此可以对它进行插入、删除等运算。

()7.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。

()8.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。

()9.一个广义表的表尾总是一个广义表。

()10.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。

()11.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。

()12.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。

()13.直接选择排序是一种稳定的排序方法。

()14.闭散列法通常比开散列法时间效率更高。

()15.有n个结点的不同的二叉树有n!棵。

()16.直接选择排序是一种不稳定的排序方法。

()17.在2048个互不相同的关键码中选择最小的5个关键码,用堆排序比用锦标赛排序更快。

()18.当3阶B_树中有255个关键码时,其最大高度(包括失败结点层)不超过8。

()19.一棵3阶B_树是平衡的3路搜索树,反之,一棵平衡的3路搜索树是3阶非B_树。

()20.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。

南邮数据结构考点范围

南邮数据结构考点范围

南邮数据结构考点范围南京邮电大学数据结构课程主要涵盖以下几个方面的内容。

1.算法复杂度分析算法复杂度分析是数据结构课程的基础。

在这一部分内容中,学生需要学习如何计算算法的时间和空间复杂度。

时间复杂度是指算法所需的时间和输入数据量之间的关系,空间复杂度是指算法所需的额外空间和输入数据量之间的关系。

学生需要掌握常见算法的复杂度分析方法,如递归算法的复杂度分析、循环算法的复杂度分析等。

2.线性表线性表是数据结构中最基本的一种数据结构,也是其他数据结构的基础。

在这一部分内容中,学生需要学习线性表的概念、基本操作和实现方式。

常见的线性表包括数组、链表、栈和队列等。

学生需要学习如何操作线性表的插入、删除、查找等操作。

3.树树是一种非线性的数据结构,是由节点和边组成的。

在这一部分内容中,学生需要学习树的基本概念、遍历方式和常见的树结构。

常见的树结构包括二叉树、二叉搜索树、平衡二叉树和堆等。

学生需要学习如何操作树的插入、删除、查找等操作,以及树的遍历方式,如前序遍历、中序遍历和后序遍历等。

4.图图是一种用于描述事物之间关系的数据结构,在现实生活中有广泛的应用。

在这一部分内容中,学生需要学习图的基本概念、存储方式和常见的图算法。

常见的图算法包括深度优先搜索算法和广度优先搜索算法等。

学生需要学习如何操作图的插入、删除、查找等操作,以及图的遍历方式,如深度优先遍历和广度优先遍历等。

5.排序算法排序算法是数据结构课程的重点内容之一。

在这一部分内容中,学生需要学习常见的排序算法,如冒泡排序、插入排序、选择排序、快速排序、归并排序等。

学生需要学习如何分析排序算法的时间复杂度和空间复杂度,并能够实现各种排序算法。

6.查找算法查找算法是数据结构课程的重点内容之一。

在这一部分内容中,学生需要学习常见的查找算法,如顺序查找、二分查找、哈希查找等。

学生需要学习如何分析查找算法的时间复杂度和空间复杂度,并能够实现各种查找算法。

除了上述内容,南京邮电大学数据结构课程还可能涉及其他相关内容,如哈希表、递归算法、图的最短路径算法、动态规划等。

南邮_数据结构课后习题答案讲解

南邮_数据结构课后习题答案讲解
(2)void Search_Delete(List *lst, T x,T y)
前置条件: x<y
后置条件:删除有序表中元素值在 x和y之间( 含x和y)的所有元素。
2020/2/8
12
void Search_Delete(List *lst, T x, T y)
{
if (lst->Size==0) { printf(“The list is empty”); return -1; }
sum=j-i; lst[i++]=lst[j++]; while(ej<lsne) lst[i++]=lst[j+//+小];于等于//删y的除元su素m删个除元素 n=n-sum; { j++; n--; }
}
2020/2/8
13
4.6 给出下列稀疏矩阵的行优先和列优先顺序存 储的行三元组和列三元组表示。
?
?
?1 4 7 ?
?
?
?4 4 9 ?
?4 4 9 ?
4.7 求对题图4-1的稀疏矩阵执行矩阵转置时数组
num[]和k[]的值。

num[col] 1
0
2
1
2
k[col]
0
1
1
3
4
2020/2/8
14
第六章 习题讲解
6-2. 对于三个结点 A,B和C,可分别组成多少不同 的无序树、有序树和二叉树?
}
2020/2/8
4
2-12.设计一个算法,将单链表中结点以逆序排列。逆序的 单链表中的结点均为原表中的结点。 Node* pInvert(Node* first) { Node *p=first, *q; first=NULL; while (p) { q=p->Link; p->Link=first; first=p; p=q; } return first; }

南京邮电大学数据结构A第3章

南京邮电大学数据结构A第3章

3.1 堆栈
3.1.1 堆栈抽象数据类型 3. 栈的C++模板抽象类
程序3-1 堆栈的C++类
#include <iostream.h> template <class T> class Stack { public: virtual bool IsEmpty() const=0; virtual bool IsFull() const=0; virtual bool Top(T &x) const=0; virtual bool Push(T x)=0; virtual bool Pop()=0; virtual void Clear()=0; };
3.2 队列
3.2.1 队列抽象数据类型 3. 队列的C++模板抽象类
template <class T> class Queue { public:
Queue(){};
~Queue(){}; virtual bool EnQueue(const T x)=0;
virtual bool DeQueue()=0;
出栈操作Pop() Node<T> *q = top; top = top->link; delete q;
top
an-1
an-2
an-3

a0

图3-3 链式栈
3.2 队列
3.1.3 栈的链接表示 队列的示意图
Q=(a0,a1,…,an-1)
入队 课堂提要
第3章 堆栈和队列 3.1 堆栈 3.2 队列 3.2.1 队列抽象数据类型 3.2.2 队列的顺序表示 3.2.3 队列的链接表示 3.3 表达式的计算 3.4 递归

数据结构A第1章(南邮)

数据结构A第1章(南邮)
ADT 1.1 栈抽象数据类型 ADT Stack { Data: (描述逻辑结构) 0个或多个元素的线性序列(a0,a1, ,an-1), 遵循LIFO原则。 Operations: (描述运算的定义) Create():创建一个空栈。 Destroy():撤消一个栈。 Push(x):元素x插入栈顶。 Pop():删除栈顶元素。 Top(x):在x中返回栈顶元素。 }
程序步数为2n+3。
41
1.5.3 渐近时间复杂度
渐近时间复杂度
使用大 O 记号表示的算法的时间复杂性,称为算法的渐
近时间复杂度,简称时间复杂度。
大O记号 如果存在两个正常数 c 和 n0 ,使得对所有的 n , nn0 ,有 f(n) c g(n) 则有 f(n)=O(g(n))。
42
渐近时间复杂度 使用大 O 记号表示的算法的时间复杂性,称为算法的渐
结点存储块分成两部分,元素本身和该元素后继元素所 在结点的存储地址。
Data
Link
20
小结
逻辑结构 概念
面向 关系
存储结构 数据及其关系在计 算机内的组织方式 面向计算机
数据元素之间逻 辑关系的描述 面向应用问题
存储结构是逻辑结构在计算机内的映像
21
1.2.4 数据结构的运算
• 数据结构最常见的运算 创建运算:创建一个数据结构; 清除运算:删除数据结构中的全部元素; 插入运算:在数据结构的指定位置上插入一 个新元素; 删除运算:将数据结构中的某个元素删除; ……
2.
数据类型 一个数据类型定义了一个值的集合以及作 用于该值集的操作的集合。 即一组值和一组操作。
26
3.抽象数据类型 抽象数据类型( Abstract Data Type, ADT )是一个 数据类型,其主要特征是该类型的对象及其操作的规 范 , 与该类型对象的表示和操作的实现分离,实行封 装和信息隐蔽,即使用和实现分离。 使用和实现分离:使用者通过规范使用该类型的数据,

数据结构A第4章(南邮)

数据结构A第4章(南邮)
设第一个数组元素a[0]的存储地址是loc(a[0]),若已 知每个数组元素占k个存储单元,则下标为i的数组元素 a[i]的存储地址loc(a[i])为 loc(a[i])=loc(a[0])+i*k (i=0,1,2,…,n-1)。
2. 二维数组的顺序表示
二维数组a[m][n]映射到一维的存储空间时有两种顺 序:行优先和列优先。 大多数语言如PASCAL、BASIC、C、C++等都是按行优 先顺序存储的,FORTRAN是按列优先顺序存储的。
a[0][0] a[1][0]…a[m-1][0] a[0][1] a[1][1]…a[m-1][1] … a[0][n-1] a[1][n-1]…a[m-1][n-1]
下标为0的列 下标为1的列 … 下标为n-1的列 (b)列优先的顺序表示 列优先顺序存储的地址计算: loc(a[i][j])=loc(a[0][0])+(j*m+i)*k
第4章 数组和字符串


数组在算法设计中经常被使用,在本 章中,将数组作为一种抽象数据结构类型 加以讨论。 在自然科学中,矩阵常被用于解决许 多实际问题,在本章中介绍几类特殊矩阵 在存储表示上的特点以及稀疏矩阵的转置 算法的实现。
内容提要 1.介绍数组的概念 2.讨论数组抽象数据类型 3.讨论特殊矩阵的存储方法 4.讨论稀疏矩阵的顺序存储方法 5.讨论稀疏矩阵转置算法 6.讨论字符串的匹配算法
使用实例: Array1D <int> a(5) ; cout<<a;
程序4.2 应用一维数组类的主程序 #include "array1d.h" void main() { Array1D<int> a(5),b(8); Array1D<int> c; //采用缺省长度0 cin>>a; cout<<"a "<<a; cin>>b; cout<<"b "<<b; cout<<"c "<<c; cout<<"a[0]="<<a[0]<<"; "<<"b[5]="<<b[5]<<endl; c=b; cout<<"c=b, c "<<c; b=a; cout<<"b=a, b "<<b; }

数据结构A-试卷

数据结构A-试卷

南京邮电学院 2004/2005 学年第二学期期末数据结构A 试题纸 (A卷)班级 ____ 学号 ___ 姓名 __ 得分 __一、单项选择题(每小题2分,共20分)1.一个栈的输入序列为1,2,3,4,下面哪一个序列不可能是这个栈的输出序列?()A. 1,3,2,4B. 2,3,4,1C. 4,3,1,2D. 3,4,2,12.循环队列顺序存储在一维数组q中,数组的允许长度是MaxSize。

教材上采用在循环队列中至少保留一个空闲元素的方法来区分空队列和满队列。

按照教材所述方法,判断队列为满的条件是()A. front= =rearB. (front+1)%MaxSize= =rearC. (rear+1)%MaxSize= =frontD. front+rear= =MaxSize3.中缀表达式(A-B*C)/D+E的后缀形式是()A. ABC*-D/E+B. ABC*-D/+EC. ABC*-DE/+D. A-BC*D/E+4.对下列哪种二叉树作中序遍历必将得到一个树中结点的非降有序序列( )。

A.AVL搜索树 B.哈夫曼树 C. 完全二叉树 D. 胜方树5.适用于对半搜索的表的存储方式及元素排列要求为( )A.链接存储,元素无序 B.链接存储,元素有序C.顺序存储,元素无序 D.顺序存储,元素有序6.下面关于m阶B-树和m阶B+树的叙述中,不正确的是()A.B-树和B+树每个非叶结点最多有m个孩子B.B-树和B+树每个非叶结点至少有⎡m/2⎤个孩子C. B-树和B+树的根结点至少有两个关键字D. B-树和B+树都能有效地支持随机检索7.设有n个顶点e条边的AOV网采用邻接表存储,则相应的拓扑排序算法的时间复杂度为()A. O(n2)B.O(e)C.O(n)D.O(n+e)8.下列说法中错误的是()A.n个结点的树的各结点度数之和为n-1B.n个结点的无向图最多有n*(n-1)条边C.用邻接矩阵存储图时所需存储空间大小仅与图的顶点数有关D.用邻接表存储图时所需存储空间大小与图的顶点数和边数都相关9.下列何种排序算法的比较次数与元素的初始排列状态无关?( D )A. 直接插入排序B.起泡排序C.快速排序D.简单选择排序10.下列关于文件的说法中,不正确的是( A )。

南昌航空大学数据结构复习资料

南昌航空大学数据结构复习资料

南昌航空大学期末考试(计算机科学与技术)数据结构复习资料计算题一. 一棵二叉树的先序、中序和后序序列分别如下,其中有一部分未显示出来。

试求出空格处的内容,并画出该二叉树。

先序序列: B F ICEH G中序序列:D KFIA EJC后序序列: K FBHJ G A解:在先序序列空格中依次填ADKJ,中序中依次填BHG,后序中依次填DIEC。

二叉树自画!二.试列出如下图中全部可能的拓扑排序序列。

123456解:全部可能的拓扑排序序列为:1523634、152634、156234、561234、516234、512634、512364三.已知哈希表地址空间为0..8,哈希函数为H(key)=key%7,采用线性探测再散列处理冲突,将数据序列{100,20,21,35,3,78,99,45}依次存入此哈希表中,列出插入时的比较次数,并求出在等概率下的平均查找长度以及查找因子。

解:哈希表及查找各关键字要比较的次数如下所示:1(4×1+1×2+1×4+2×5)=ASL=8a=8/9四.已知关键字序列{23,13,5,28,14,25},试构造二叉排序树。

解:五.设有序列:w={23,24,27,80,28},试给出哈夫曼树;哈夫曼树如下图所示:六:已知一棵二叉树的先序序列与中序序列分别如下,试画出此二叉树。

先序序列:ABCDEFGHIJ中序序列:CBEDAGHFJI解:先由先序序列的第一个结点确定二叉树的根结点,再由根结点在中序序列中左侧部分为左子树结点,在右侧部分为右子树结点,再由先序序列的第一个结点确定根结点的左右孩子结点,由类似的方法可确定其他结点,如下图所示。

七.(本题8分)对于如下图所示的G,用Kruskal算法构造最小生成树,要求图示出每一步的变化情况。

解:用Kruskal算法构造最小生成树的过程如下图所示:八.给出一组关键字29、18、25、47、58、12、51、10,写出归并排序方法进行排序时的变化过程。

南昌航空大学大二计算机专业算法与数据结构考试试卷及参考答案4

南昌航空大学大二计算机专业算法与数据结构考试试卷及参考答案4

南昌航空大学算法与数据结构考试试卷及参考答案4一、单项选择题(5’)1. 若按从左到右的顺序读入已知序列a,b,c,d,e,f,g中的元素,然后结合栈的操作,能得到下列序列中的哪些序列()。

A、decfbgaB、fegdacbC、efdgbcaD、dcbefag答案:A2. 在待排序的元素序列基本有序的前提下,效率最高的排序算法是()。

A、选择排序B、插入排序C、快速排序D、归并排序答案:A3. 已知一个栈的进栈顺序列为1,2,3,…n,其输出序是p1,p2,p3,…pn。

若p1=3,则p2的值()。

A、一定是2B、可能是2C、可能是1D、可能是2答案:D4. 一个递归算法必须包括()。

A、递归部分B、结束条件和递归部分C、迭代部分D、结束条件和迭代部分答案:B5. 在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()。

A、s→link=p→link;p→link =s;B、p→link =s;s→link=q;C、p→link=s→link;s→link =p;D、q→link =s;s→link=p;答案:A6. 从逻辑上可以把数据结构分成()。

A、动态结构和静态结构B、顺序结构和链接结构C、线性结构和非线性结构D、初等结构和组合结构答案:C7. 哈夫曼树可应用于()。

A、组织文件索引B、动态存储管理C、字符串的模式匹配算法D、外排序中确定二路并归的最佳归并次序答案:D8. 关键路径是事件结点网络中()。

A、最长的回路B、最短的回路C、从开始结点到完成结点的最长路径D、从开始结点到完成结点的最短路径答案:C9. 如果把由树转换得到的二叉树叫做这棵树所对应的二叉树,则下面结论正确的是()。

A、等同于该二叉树对应的树林结点的先根次序序列B、等同于该二叉树对应的树林结点的后根次序序列C、等同于该二叉树对应的树林结点的层次次序序列D、不等于上述任何一种序列答案:A10. 一个具有n个顶点的连通无向图的生成树中有()条边。

南邮微机A复习提纲

南邮微机A复习提纲

。中断向量表的引导作用
例:实模式下,从内存地址 0000H:0048H开始的连续 4个单元中存放的内 容为00H,38H,30H,50H,则该地址所对应的中断类型码为 _______,该中断 所对应的中断服务子程序的入口地址为______。
四、微机系统中断分类 (类型定义,举例)
内部中断 PC机 256种 中断 硬件中断 (外部中断)
中断系统
例:什么是中断?什么是中断向量?什么是中断向量表? IRET
要求掌握:
CPU执行中断指令后,完成哪些操作
:
STI,CLI只对可屏蔽中断请求有效
例:CPU执行IRET指令后,从栈顶弹出 字节数据,分别赋给 ______、________和 ________。(p271) 例:CPU执行软中断指令,会把( )字节的信息压入堆栈
RESET PROC ;恢复系统1CH型中断向量 MOV DX,WORD PTR OLD1C MOV DS,WORD PTR OLD1C+2 MOV AX,251CH INT 21H RET RESET ENDP CODE ENDS END BEG
(8259A编程 P287) 假设微机系统外扩了如下的一个‘单脉冲发 生器’,该‘单脉冲发生器’电路受一个自复开关K的控制,每按 一次K,该电路输出一个正脉冲,输入到系统机从8259的IR1作为外 部中断请求。 要求:每按一次K,屏幕上显示一行字符串“Welcome!”。主机键 盘按任意键,程序结束,返回DOS。 K 编写开放8259和中断向量置换程序 从8259 IR1 单脉冲发生器
②CPU一条指令执行完毕 ③CPU处于开中断状态(I标=1) • 响应非屏蔽中断的条件 ①有非屏蔽中断请求,没有DMA请求 ②一条指令执行完

南邮 数据结构A 习题3参考答案

南邮 数据结构A 习题3参考答案
(4)能,操作序列:push(A),push(B),push(C),push(D),push(E),pop() ,pop(),pop(),pop(),pop()
3.4
(1)(a+b)/(c+d)ab+cd+/
(2)b^2-4*a*cb2^4a*c*-
(3)a*c-b/c^2ac*-bc2^/-
(4)(a+b)*c+d/(e+f)ab+c*def+/+
this->Pop();
sq.EnQueue(temp);
}
while (!sq.IsEmpty())
{
sq.Front(temp);
sq.DeQueue();
this->Push(temp);
}
}
3.15
(1)
void max(int a[],int n,int &num)
{
if (n>0)
{
if (a[n-1]>num) num=a[n-1];
(5)(a+b)*(c*d+e)-a*cab+cd*e+*ac*-
3.13
t template <class T>
void SeqStack<T>::Invert(void)
{
SeqQueue<T> sq(maxTop + 1);
T temp;
while (top != -1)
{
this->rn 0;
}
main()
{
int a[10],s,av;
int n=10;
……

南邮 通达专业 数据结构复习练习

南邮 通达专业 数据结构复习练习
A. O(1)B. O(n)C. O(m)D. O(m+n)
采用二分法在线性表上查找的条件是线性表有序且________。
A.使用链式存储结构B.使用顺序存储结构
C.使用索引结构D.使用散列结构
图2表示的堆是。
图2
A.最小堆B.最大堆C.不是堆D.既是最大堆,也是最小堆
后缀表达式6 4 2 - / 3 2 * +的结果为。
分别以下列序列构造二叉搜索树,与众不同的是________。
A. 100,80,60,85,110,120,150B. 100,80,60,85,120,110,150
C. 100,80,85,60,120,110,150D. 100,80,60,85,120,150,110
一组关键字(87,73,25,55,90,28,31,17,101,22,3,62),若散列函数为h(key)=keymod11,在链地址法处理后的同一链表中的是________。
一个n×n的对称矩阵,压缩后的存储容量为______。
已知一棵二叉树的后序遍历结果是K B C D F E N,则该二叉树的根结点为。
已知一棵二叉树有n个结点,则其二叉链表结构中共有个空指针域。
在字符串S="structure"中,以t为首的子串有________个。
二叉搜索树左子树不空,则左子树上所有结点的关键字值均(小于、大于、等于)根结点的关键字值。
};
函数原型为:
template <class T>
boolSingleList<T>::increase();
template<class T>
bool SingleList<T>::increase(){

南京邮电大学数据结构A第6章

南京邮电大学数据结构A第6章

(21,25,28,33,36,45) 33 搜索成功!
35 (21,25,28,33,36,45) 搜索失败!
6.2 顺序搜索
6.2.2 有序表的顺序搜索
程序6.4 顺序搜索有序表 const int Infinity = 1000; template <class T> ResultCode ListSet<T>::Search(T& x)const { l[n] = Infinity; for (int i=0;l[i]<x;i++) ; //当list[i]的关键字值大于等于 // x的关键字值时,退出循环 if (l[i]==x) { return Success; //搜索成功 } return NotPresent; //搜索失败 }
template<class K, class D> Struct E { operator K() const{return key;} //使元素间的比较视为关键字间的比较 K key; D data; };
其中,K称为关键字类型,应为可比较大小的类型。 key为关键字:用来标识一个数据元素的某个数据项。
6.3 二分搜索
6.3.2 对半搜索
由分割点的不同,可以得到不同的二分搜索方法。如:对 半搜索、一致对半搜索、斐波那契搜索和插值搜索等。
对半搜索是二分搜索中的一种,分割点为表的中点元素。
若当前搜索的子表为 (alow,alow+1,…,ahigh) 则 i=(low+high)/2 其中,i、low 和 high均为元素在表中的序号,low表示表的左 端,high表示表的右端。
6.3 二分搜索
6.3.2 对半搜索 对半搜索的例子 (1) key=66

2022年南京邮电大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年南京邮电大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年南京邮电大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。

A.5B.6C.8D.92、将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。

A.NB.2N-1C.2ND.N-13、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表4、最大容量为n的循环队列,队尾指针是rear,队头:front,则队空的条件是()。

A.(rear+1)MOD n=frontB.rear=frontC.rear+1=frontD.(rear-1)MOD n=front5、在下列表述中,正确的是()A.含有一个或多个空格字符的串称为空格串B.对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树C.选择排序算法是不稳定的D.平衡二叉树的左右子树的结点数之差的绝对值不超过l6、若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b, c,d,e,a,则根结点的孩子结点()。

A.只有e B.有e、b C.有e、c D.无法确定7、若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是()。

8、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为()。

A.CBEFDAB.FEDCBAC.CBEDFAD.不定9、有n(n>0)个分支结点的满二叉树的深度是()。

A.n2-1B.log2(n+1)+1C.log2(n+1)D.log2(n-l)10、下列二叉排序树中查找效率最高的是()。

A.平衡二叉树B.二叉查找树C.没有左子树的二叉排序树D.没有右子树的二叉排序树二、填空题11、以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。

南昌航空大学 数据结构复习(有试题,有答案)

南昌航空大学 数据结构复习(有试题,有答案)

《数据结构》复习提纲第一章数据结构的概念及基本结构,数据结构在计算机中的表示方法及其存储结构算法的特性,会计算时间复杂度第二章线性表的顺序存储表示,掌握插入和删除操作,线性表的链式存储表示,掌握单链表的插入和删除操作第三章栈的定义及特点,栈的顺序存储表示队列的定义及特点,链队列的插入和删除,循环队列的判空判满条件第四章串的概念及常用操作,掌握模式串next函数的求法第五章特殊矩阵的存储表示,稀疏矩阵的三元组表示,会求广义表的头部和尾部第六章树的定义和基本概念,二叉树的性质,二叉树的链式存储结构――二叉链表二叉树的先序,中序,后序, 层次遍历操作会对二叉树进行先序,中序,后序线索化操作树的存储结构――-孩子兄弟表示法树,森林,二叉树三者之间的转换方法,以及它们遍历的对应关系掌握哈夫曼树的构造,会求树的带权路径长度WPL第七章图的定义和术语,图的邻接矩阵表示法,邻接表,逆邻接表掌握图的深度优先搜索算法,广度优先搜索算法最小生成树――普里姆算法和克鲁斯卡尔算法,会对AOV网进行拓扑排序会求AOE网的关键路径,关键活动第九章顺序查找表,有序表的折半查找,索引查找表及其平均查找长度ASL二叉排序树的建立和删除操作,会计算其平均查找长度ASL掌握将二叉排序树转换成平衡二叉树的旋转处理方法,哈希表的概念,掌握哈希函数的构造方法――除留余数法掌握处理冲突的方法――线性探测再散列及平均查找长度ASL――二次探测再散列及平均查找长度ASL第十章直接插入排序,希尔排序,快速排序,简单选择排序,堆排序,归并排序会写上述排序算法每趟排序的结果,并对其进行排序性能分析(稳定性,时间复杂度等)期末考试题型:选择题,填空题,综合题练习题一、单选题1.一个栈的输入序列为1,2,3,4,下面哪一个序列不可能是这个栈的输出序列?(c)A. 1,3,2,4B. 2,3,4,1C. 4,3,1,2D. 3,4,2,12.下列排序方法中,关键字的比较次数与记录的初始排列状态无关?( c )A. 直接插入排序B. 起泡排序C. 快速排序D. 直接选择排序3.对n个记录的文件进行二路归并排序,总的时间代价为( d)A. O(nlogn)B. O(n2)C. O(logn)D. O(n)4.若一棵二叉树具有10个度为2的结点,则该二叉树的度为0的结点个数是(b )A. 9B. 11C. 12D. 不确定5.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行(d)A.q一>next=p一>next;p一>next=q;B.p一>next=q一>next;q=p;C.q一>next=p一>next;p一>next=q;D.p一>next=q一>next; q一>next=p;6.广义表A=(a,b,(c,d),(e,(f,g))),则式子Head(Tail(Head(Tail(Tail(A)))))的值为 d ;A.(g) B.(d) C.c D.d7. 直接插入排序在最好情况下的时间复杂度为(d)。

南京邮电大学数据结构A第10章

南京邮电大学数据结构A第10章

10.2 简单排序算法
本节介绍三种简单的排序算法: 简单选择排序 冒泡排序 直接插入排序 它们的时间复杂度在最坏情 况下均为O(n2)。 虽然这些算法对数据量较大的情况 不大实用, 但仍然可从中体验排序 课堂提要
第10章 内排序 10.1 排序的基本概念 10.2 简单排序算法 10.2.1 简单选择排序 10.2.2 直接插入排序 10.2.3 冒泡排序 10.3 快速排序 10.4 2路合并排序
48 48 48 48 72 (72 68) 68
02) 48) 48) 48) 48) 68 ) (72) 72)
(02)(36 12 12 12 12 12
12) (68
48) (68
排序结果: (02
图10-1 简单选择排序示意图
10.2 简单排序算法
10.2.1 简单选择排序
程序 10-1 简单选择排序 template <class T> void SelectSort(T A[], int n) { int small; for (int i=0; i<n-1; i++ ) { // n-1趟 small=i; for (int j=i+1; j<n; j++) if (A[j]<A[small]) small=j; Swap(A[i],A[small]); } //endfor } //函数Swap(T &a, T &b)交换两个元素 时间复杂度按比较次数衡量为O(n2)。
…, p(n-1),使得序列按 Kp(0) Kp(1)…Kp(n-1) (非递减) 或 Kp(0)Kp(1)…Kp(n-1) (非递增) 的次序排列为: (Rp(0),Rp(1),…,Rp(n-1))
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构A复习要点第1章基础知识算法与数据结构(数据结构概念、逻辑结构、数据存储结构示等)数据抽象和抽象数据类型(数据结构规范、实现)算法分析的基本方法(时间复杂性、空间复杂性)第2章线性表线性表的顺序和链接表示理解在顺序表、单链表上实现线性表运算,能设计相应算法程序顺序和链接表示的优缺点比较第3章堆栈和队列了解栈和队列的概念、特点理解顺序栈和循环队列运算的实现中缀表达式与后缀表达式的转换后缀表达式计算第4章数组和字符串一般数组存储方法三元组存储稀疏矩阵的方法三元组表示的快速矩阵转置方法字符串的概念、KMP算法及其改进第5章树二叉树的定义、性质及二叉链表理解二叉树的遍历算法(遍历结果、算法设计),能设计相应算法程序堆、堆的建立和调整森林与二叉树的相互转换哈夫曼树构造、哈夫曼编码、WPL计算第6章集合与搜索理解有序表的顺序搜索算法理解对半搜索算法平均搜索长度的计算第7章搜索树理解二叉搜索树的定义、性质和插入、删除算法二叉平衡树的定义及插入算法B-树的定义和插入、删除方法第8章散列表掌握散列函数的相关概念散列函数解决冲突的开地址法(线性探查法,二次探查法、双散列法)第9章图图的基本概念和存储结构理解图的算法(结果):遍历、拓扑排序、最小代价生成树、关键路径、最短路径第10章内排序三种简单排序算法、快速排序和两路合并排序算法、过程、结果排序算法的时间复杂度(最好、最差,平均)、稳定性第11章文件文件的基本概念初始游程的生成及竞赛树考试样题填空题写出表达式a*b+c/d的后缀形式________。

已知一无向图G=(V,E),其中V={a,b,c,d,e},E={(a,b), (a,d), (a,c) (d,c), (b,e)},现用某一种遍历方法从顶点a开始遍历图,得到的序列为abecd,则采用的是__________遍历方法。

在顺序表长度为n中,平均在表中插入一个元素需要移动元素的个数可用计算公式为________。

一个表长为n的线性表,其排序时间最快为。

选择题具有n 个顶点的有向完全图中,边的总数为()条。

A)n(n+1) B)n(n-1)C)n(n-1)/2 D)n(n+1)/2设一个栈输入序列是1、2、3、4、5,则下列序列中不可能是栈的输出序列是()。

A)32541 B)15432C)14523 D)23145二叉树的前序遍历为EFHIGJK,中序遍历序列为HFIEJKG。

该二叉树根结点的右子树的根是()A) E B) FC) G D) H对有14个元素的有序表A[1]-A[14]作对半查找,查找元素A[4]时的被比较元素依次为()A. A[1],A[2],A[3],A[4]B.A[7],A[3],A[5],A[4]C. A[1],A[2],A[7],A[4]D.A[7],[A5],A[3],A[4]设有一个长度为100且已排好序的表,用对半搜索进行查找,若搜索不成功,则至少要比较______次。

()A.9 B.8 C.7 D.6简答题用一维数组存放的一棵完全二叉树如图所示:图写出前序、中序、后序遍历该二叉树时访问结点的顺序。

图的邻接表表示一个给定的无向图。

(1)给出从顶点v1开始,用深度优先搜索法进行遍历时的顶点序列;(2)给出从顶点v1开始,用广度优先搜索法进行遍历时的顶点序列。

解答题设数据集合d={1,12,5,8,3,10,7,13,9},试完成下列各题: (1)依次取d 中各数据,构造一棵二叉搜索树bt 。

(2)画出在二叉树bt 中删除12后的树结构。

对图的3阶B-树,依次执行下列操作,画出各步操作的结果。

(1)插入90 ;(2)插入25;(3)插入45;(4)删除60;图程序阅读题图采用邻接表存储表示,边结点的结构如图所示,下面的程序是邻接表类LinkedGraph 的某个成员函数template <class T>void LinkedGraph<T>::A(){int *in=new int[n];for (int i=0;i<n;i++) in[i]=0; ENode<T> *p; for (i=0;i<n;i++) { p=a[i]; while (p) { in[p->adjvex]++;p=p->nextarc; } }cout<<endl;for (i=0;i<n;i++) cout<<i<<": "<<in[i]<<";"<<endl; delete []in; }图图⑴ 请说明该成员函数的作用是什么?⑵ 若有一个邻接表如图8所示,请给出执行该函数的结果?算法题在以二叉链表表示的二叉树类BinaryTree 中增加一个成员函数LeavesInTree( )。

该模板函数为递归函数,其功能是求二叉树类BinaryTree 的对象中叶子结点的数目。

实现该递归函数。

函数原型如下:template <class T> int BinaryTree<T>::LeavesInTree( )在不带表头结点的单链表中删除一个关键字值为x 的元素 。

函数原型如下: template <class T>bool SingleList<T>::Delete(T x)考试样题答案填空题写出表达式a*b+c/d 的后缀形式________。

【答案】 a b * c d / +已知一无向图G=(V,E),其中V={a,b,c,d,e},E={(a,b), (a,d), (a,c) (d,c), (b,e)},现用某一种遍历方法从顶点a 开始遍历图,得到的序列为abecd ,则采用的是__________遍历方法。

【答案】深度优先在顺序表长度为n 中,平均在表中插入一个元素需要移动元素的个数可用计算公式为________。

【答案】一个表长为n 的线性表,其排序时间最快为 。

【答案】O(n) 选择题具有n 个顶点的有向完全图中,边的总数为( )条。

A )n (n+1)B )n (n-1)C )n (n-1)/2D )n (n+1)/2 【答案】B设一个栈输入序列是1、2、3、4、5,则下列序列中不可能是栈的输出序列是( )。

A )32541B )15432C )14523D )23145 【答案】C 只能是14532二叉树的前序遍历为EFHIGJK ,中序遍历序列为HFIEJKG 。

该二叉树根结点的右子树的根是( )A) E B) F C) G D) H∑--==--+=112)1(11n i i ni n n E【答案】C对有14个元素的有序表A[1]-A[14]作对半查找,查找元素A[4]时的被比较元素依次为() A. A[1],A[2],A[3],A[4] B.A[7],A[3],A[5],A[4] C. A[1],A[2],A[7],A[4] D.A[7],[A5],A[3],A[4] 【答案】B第1次:范围[1, 14],中间元素是(1+14)/2 = 7 第2次:范围[1, 6],中间元素是(1+6)/2 = 3 第3次:范围[4, 6],中间元素是(4+6)/2 = 5 第4次:范围[4, 4],中间元素是(4+4)/2 = 4设有一个长度为100且已排好序的表,用对半搜索进行查找,若搜索不成功,则至少要比较______次。

( )A .9B .8C .7D .6 【答案】D长度为100的有序表进行对半查找,查找失败时比较⎣⎦100log 2次或者⎣⎦1100log 2+次,即6或7次。

简答题用一维数组存放的一棵完全二叉树如图所示:图写出前序、中序、后序遍历该二叉树时访问结点的顺序。

【答案】前序遍历序列:ABDECF 中序遍历序列:DBEAFC 后序遍历序列:DEBFCA图的邻接表表示一个给定的无向图。

(1)给出从顶点v1开始,用深度优先搜索法进行遍历时的顶点序列; (2)给出从顶点v1开始,用广度优先搜索法进行遍历时的顶点序列。

【答案】深度优先遍历序列:v1, v2, v4, v3, v5, v6广度优先遍历序列:v1, v2, v3, v4, v5, v6解答题设数据集合d={1,12,5,8,3,10,7,13,9},试完成下列各题:(1)依次取d中各数据,构造一棵二叉搜索树bt。

(2)画出在二叉树bt中删除12后的树结构。

【答案】(1)(2) 删除12后对图的3阶B-树,依次执行下列操作,画出各步操作的结果。

(1)插入90 ;(2)插入25;(3)插入45;(4)删除60;图【答案】插入90 插入25插入45删除60程序阅读题图采用邻接表存储表示,边结点的结构如图所示,下面的程序是邻接表类LinkedGraph 的某个成员函数template <class T>void LinkedGraph<T>::A(){int *in=new int[n];for (int i=0;i<n;i++) in[i]=0; ENode<T> *p; for (i=0;i<n;i++) { p=a[i]; while (p) { in[p->adjvex]++;p=p->nextarc; } }cout<<endl;for (i=0;i<n;i++) cout<<i<<": "<<in[i]<<";"<<endl; delete []in; }⑴ 请说明该成员函数的作用是什么?⑵ 若有一个邻接表如图8所示,请给出执行该函数的结果? 【答案】(1) 打印图中所有顶点的入度 (2) 结果 0 : 2 1 : 1 2 : 1 3 : 1图图算法题在以二叉链表表示的二叉树类BinaryTree中增加一个成员函数LeavesInTree( )。

该模板函数为递归函数,其功能是求二叉树类BinaryTree的对象中叶子结点的数目。

实现该递归函数。

函数原型如下:template <class T>int BinaryTree<T>::LeavesInTree( )【答案】template <class T>int BinaryTree<T>::LeavesInTree( ){return Leaf(root);}template <class T>int BinaryTree<T>::Leaf(BTNode<T> *t){if (t == NULL) return 0;if ((t->lChild == NULL)&&(t->rChild == NULL)) return 1;return Leaf(t->lChild) + Leaf(t->rChild);}在不带表头结点的单链表中删除一个关键字值为x的元素。

相关文档
最新文档