数据结构作业一.docx

上传人:b****8 文档编号:10904337 上传时间:2023-02-23 格式:DOCX 页数:19 大小:28.02KB
下载 相关 举报
数据结构作业一.docx_第1页
第1页 / 共19页
数据结构作业一.docx_第2页
第2页 / 共19页
数据结构作业一.docx_第3页
第3页 / 共19页
数据结构作业一.docx_第4页
第4页 / 共19页
数据结构作业一.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据结构作业一.docx

《数据结构作业一.docx》由会员分享,可在线阅读,更多相关《数据结构作业一.docx(19页珍藏版)》请在冰豆网上搜索。

数据结构作业一.docx

数据结构作业一

《数据结构》作业一

得分:

一、填空题(每空1分,共35分)

1.数据的逻辑结构被分为____________、___________、____________和集合四种。

2.数据的存储结构被分为顺序、___________、____________和散列四种。

3.顺序存储的线性表,设其K度为n,在任何位置上插入或删除操作的时间代价基本上都是等效的。

则插入一个元素大约要移动表中的个元素,删除一个元素时大约要移动表中的个元素。

4.数组的长度是,线性表的长度是。

5.当向—个顺序表插入一个元素时,从插入位置开始向后的所有元素均需一个位置,移动过程是从向依次移动每一个元素。

6.要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需一个位置,移动过程是从向依次移动每一个元素。

7.在双向链表中,每个结点含有两个指针域,—个指向上结点,另一个指向结点。

8.根据线性表的链式存储结构中每个结点所含指针的个数,链表可分为和;

而根据指针的联接方式,链表又可分为和。

9.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,则采用存储结构为宜,相反,当经常进行的是插入和删除操作时,则采用存储结构为宜。

10.顺序表中逻辑上相邻的元素,物理位置紧邻,单链表中逻辑上相邻的元素,物理位置

紧邻。

11.线性表、栈和队列都是结构,可以在线性表的位置插入和删除元素;对于栈只能在插入和删除元素;对于队列只能在插入元素和在删除元素。

12.设有一空栈,现有输入序列1,2,3,4,5,经过push,push,pop,push,pop,push,push后,输出序列是。

13.无论对于顺序存储还是链接存储的栈和队列来说,进行插入或删除运算的时间复杂度均相同为。

14.设字符串S1=‘ABCDEF’,S=‘PQRS’,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(Sl,LEN(S2),2))后的串值为。

15.空串是指,空格串是指。

二、单项选择题:

(每空2分,共30分)

1.下面程序段的时间复杂度为()。

for(inti=0;i

for(intj=0;j

a[i][j]=i*j;

A.O(m2)B.O(n2)C.O(m*n)D.O(m+n)

2.在一个长度为n的顺序表中删除第i个元素(0≤i≤n)时,需向前移动()个元素。

A.n-iB.n-i+1C.n-i-1D.i

3.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较()个元素结点.

A.n/2B.nC.(n+l)/2D.(n-1)/2

4.设单链表中指引p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为()。

A.p->next=p->next->next;B.p=p->next:

C.p=p->next->next;D.p->next=p:

5.线性表采用链式存储刚,其地址()。

A.必须是连续的B.一定是不连续的

C.部分地址必须是连续的D.连续与否均可以是

6.在一个单链表中,已知*q结点是*p结点的前趋结点,若在*q和*p之间插入*s结点,则须执行()。

A.s->next=p->next;p->next=sB.q->next=s:

s->next=p

C.p->next=s->next;s->next=pD.p->next=s;s->next=q

7.线性表是()。

A.一个有限序列,可以为空B.一个有限序列,不可以为空

C.一个无限序列,可以为空D.一个无限序列,不可以为空

8.在一个长度为n的顺序表中向第i个元素(o

A.n-iB.n-i+1C.n-i-1D.i

9.若有一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是()。

A.n-iB.n-i-1C.n-i+lD.不确定

10.设有一个栈,元素的进栈次序为A,B,C,D,E,下列()是不可能的出栈序列。

A.A,B,C,D,EB.B,C,D,E,A

C.E,A,B,C,DD.E,D,C,B,A

11.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,则当做出栈处理时,top变化为()。

A.top不变B.top=0C.top--D.top++

12.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为()。

A.rear%n=frontB.(front+1)%n=rear

C.rear%n-1=frontD.(rear+1)%n=front

13.向一个栈顶指针为hs的链栈中插入—个*s结点时,应执行()。

A.hs->next=s;B.s->next=hs;hs=s;

C.s->next=hs->next;hs->next=s:

D.s->next=hs;hs=hs->next;

14.在一个链队列中,假定front和rear分别为队头和队尾指针,则插入*s结点的操作应执行()。

A.front->next=s;front=sB.s->next=rear;rear=s

C.rear->next=s;rear=sD.s->next=front;front=s

15.在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为()。

A.front=front->nextB.rear=rear->next

C.rear=front->nextD.front=rear->next

三、简述以下算法的功能(每题5分,共10分)

1.statusA(LinkedListL)

{if(L&&L→next){

Q=L;L=L→next;P=L;

while(P→next)P=P→next;

P→next=Q;Q→next=NULL;

}

ReturnOK;

}

2.statusalgo2(StackS,inte)

{

StackT;intd;

InitStack(T);

while(!

StackEmpty(S)){

Pop(S,d);

if(d!

=e)Push(T,d);

}

while(!

StackEmpty(T)){

Pop(T,d);

Push(S,d);

}

}

四、算法编写(共25分)

1.设计在无头结点的单链表中删除第i个结点的算法。

(7分)

2.设计将单循环链表逆置的算法。

(8分)

3.编写一个程序,将两个字符串s1和s2进行比较,若s1>s2则输出一个正数,若s1=s2则输出0,若s1

(10分)

《数据结构》作业二

得分:

一、填空题(每空1分,共30分)

1.一维数组的逻辑结构是,存储结构是;对于二维或多维数组,分为按

和两种不同的存储方式。

2.对于一个二维数组A[m][n],若按行序为主序存储,则任一元素A[i][j]相对于A[0][0]的地址为。

3.一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为,深度为。

4.一个nn的对称矩阵,如果以行为主序或以列为主序存入内存,则其容量为。

5.己知广义表A=((a,b,c),(d,e,f),则运算head(tail(tailA.))=。

6.数组A[l...10,-2...6,2...8]以行优先的顺序存储,设第一个元素的首地址是100,每个元素占3个存储长度的存储空间,则元素A[5,0,7]的存储地址为。

7.假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为,树的深度为,终端结点的个数为,C结点的双亲结点为,其孩子结点为和结点。

8.设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有个。

9.对于一个具有n个结点的二叉树,当它为一棵二叉树时具有最小高度,即为,当它为一棵单支树具有高度,即为。

10.由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为。

11.在一棵二叉排序树上按遍历得到的结点序列是一个有序序列。

12.一棵深度为k的满二叉树的结点总数为,一棵深度为k的完全二叉树的结点总数的最小值为,最大值为。

13.在具有n个结点的二叉排序树上插入一个新结点时,其时间复杂度大致为,根据n个数据元素生成一棵二叉排序树时,其时间复杂度大致为。

14.己知8个数据元素由(35,75,40,15,20,55,95,65)桉照依次插入结点的方法生成一棵二叉排序树后,最后两层上的结点总数为。

15.由a,b,c三个结点构成的二叉树,共有种不同的结构。

二、单项选择题:

(每空2分,共30分)

1.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个。

A.4B.5

C.6D.7

2.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为()个。

A.15B.16

C.17D.47

3.假定一棵三叉树的结点数为50,则它的最小高度为()。

A.3B.4

C.5D.6

4.在一棵二叉树上第5层的结点数最多为()。

A.8B.16

C.15D.32

5.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组R[1...n]中,结点R[i]若有左子女,则左子女是结点()。

A.R[2i+1]B.R[2i]

C.R[i/2]D.R[2i-1]

6.在一棵只有k层的满三叉树中,结点总数为()。

A.(3k-1)/2B.3k-1

C.(3k-1)/3D.3k

7.由带权为9,2,5,7的四个叶了结点构造一棵哈夫曼树,该树的带权路径长度为()。

A.23B.37

C.46D.44

8.在一棵高度为k的理想平衡二叉树中,最少含有()个结点。

A.2k-1B.2k+l

C.2k-lD.2k

9.已知10个数据元素(50,30,15,35,70,65,95,60,25,40),按照依次插入结点的方法生成一棵二叉排序树后,在查找成功的情况下,查找每个元素的平均比较次数(又称平均查找长度)为()。

A.2.5B.3.2

C.2.9D.2.7

10.树B的层号表示为1a2b,3d,3e,2c,对应于下面选择的()。

A.1a(2b(3d,3e),2c)B.a(b(D.,e),c)

C.a(b(d,e),c)D.a(b,d(e),c)

11.如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的()。

A.中序B.前序

C.后序D.层次序

12.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序()。

A.不发生改变B.发生改变

C.不能确定D.以上都不对

13.欲实现任意二叉树的后序遍历的非递归算法而不必使用栈结构,最佳方案是二叉树采用()存储结构。

A.三叉链表B.广义表

C.二叉链表D.顺序

14.设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是()。

A.a在b右方B.a在b左方

C.a是b的祖先D.a是b的子孙

15.线索二叉树是一种()结构。

A.逻辑B.逻辑和存储

C.物理D.线性

三、应用题(每题6分,共24分)

1.二叉树与树之间有何区别?

度为2的树与二叉树有何区别?

2.一棵二叉树如图:

写出对此树进行先序、中序、后序遍历时得到的结点序列。

3.已知一组元素为(45,25,80,60,18,30,12,40,70),试画出按元素输入排列顺序而生成的一棵二叉排序树。

4.任一棵有n个结点的二叉树,已知它有m个叶子结点。

证明:

度为2的结点有m-1个,其他结点是度数为1的结点。

四、算法编写(每题8分,共16分)

1.试编写一个判别表达式中开、闭括号是否配对的算法。

2.试写出先序遍历二叉树的递归算法。

《数据结构》作业三

得分:

一、填空题(每空2分,共40分)

1.设无向图G的顶点数为n,图G最少有边;最多有条边。

若G为有向图,有n个顶点,则图G最少有条边,最多有条边。

2.假定一个无向图,有n个顶点e条边,则在邻接矩阵表示中,求任一个顶点度数的时间复杂度为,用邻接表表示中,访问一个顶点的所有邻接点的时间复杂度为。

3.对于含有n个顶点e条边的无向连通图,利用普里姆算法生成最小生成树的时间复杂度为,利用克鲁斯卡算法生成最小生成树的时间复杂度为,在具有n个顶点的图的生成树中,含有条边。

4.对用邻接矩阵表示的图进行深度优先或广度优先搜索遍历时的时间复杂度为,对用邻接表表示的图进行深度或广度优先搜索遍历时的时间复杂度为,图的深度优先或广度优先搜索遍历的空间复杂度均为。

5.在一个图G的邻接表表示中,每个顶点的邻接表中所含的结点数,对于有向图而言等于该顶点的;而对于无向图而言等于该顶点的。

6.设有向图G有n个顶点e条边,进行拓扑排序时的总的计算时间为。

7.若无向图G的顶点度数的最小值大于或等于时,G至少有一条回路。

8.假定查找有序表R[0..11]中每个元素的概率相等,则进行顺序查找的平均查找长度为,进行二分查找时的平均查找长度为。

9.一棵深度为h的B-树上,任一个叶子结点所处的层数为,当向该B-树插入一个新关键字时,为查找插入位置需读取个结点。

二、单项选择题:

(每空2分,共32分)

1.已知一个图如下所示,则从顶点a出发按深度优先搜索遍历则可以得到的一种顶点序列为()。

A.a,b,c,c,d,fB.a,c,f,e,b,d

C.a,c,b,c,f,dD.a,e,d,f,c,b

2.在一个图中,所有顶点的度数之和等于所有边数的()倍。

A.1/2B.2

C.1D.4

3.在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的()倍。

A.1/2B.2

C.1D.4

4.一个具有n个顶点的无向图中,要连通全部顶点至少需要()条边。

A.nB.n+l

C.n/2D.n-1

5.关键路径是事件结点网络中的()。

A.从源点到汇点的最长路径B.从源点到汇点的最短路径

C.最长的回路D.最短的回路

6.对一个具有n个顶点的图,采用邻接矩阵表示则该矩阵的大小为()。

A.nB.(n-1)2

C.(n十1)2D.n2

7.n个顶点的强连通图至少有()条边。

A.nB.n-1

C.n+1D.n(n-1)

8.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。

A.中序遍历B.先序遍历

C.后序遍历D.按层遍历

9.采用邻接表存储的图的广度优先遍历算法类似于二叉树的()。

A.按层遍历B.中序遍历

C.后序遍历D.先序遍历

10.判定一个有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用()。

A.求关键路径的方法B.求最短路径的Dijkstra方法

C.深度优先遍历算法D.宽度优先遍历算法

11.采用顺序查找的方法查找长度为n的线性表,则查找每个元素的平均比较次数为()。

A.nB.n/2

C.(n+l)/2D.(n-1)/2

12.采用二分查找的方法查找长度为n的有序表,查找每个元素时平均比较次数与对应判定树的高度(设高度≥2)相比较是()。

A.小于B.大于

C.等于D.大于等于

13.对线性表进行二分查找时,要求线性表必须()。

A.以顺序存储方式存储B.以链式存储方式存储

C.以顺序存储方式存储,且数据元素有序D.以链式存储方式存储,且数据元素有序

14.己知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分查找值为90的元素时,查找成功的比较次数为()。

A.1B.2

C.3D.4

15.对于一个线性表,既要求能够进行较快的插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该()。

A.以顺序方式存储B.以链接方式存储

C.以散列方式存储D.以上均可

16.如果要求一个线表既能较快地查找,又能适应动态变化的要求,则宜采用的查找方法为()。

A.分块查找B.顺序查找

C.折半查找D.基于属性查找

三、应用题(共28分)

1、如下图所示的带权有向图G,试回答以下问题:

(10分)

(1)给出从结点V1出发按深度优先搜索遍历G所得的结点序列,并给出按广度优先搜索遍历G所得的结点序列。

(2)给出G的一个拓扑序列。

(3)给出从结点v1到结点v8的最短路径和关键路径.

2、证明具有n个顶点的无向完全图的边数为n(n-1)/2。

(8分)

3、已知一个长度为12的表{Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec}

(1)试按表中元素的次序依次插入一棵初始为中的二叉排序树。

(字符之间以字典顺序比较大小)画出对应的二叉排序树,并求出在等概率情况下查找成功的平均查找长度。

(2)若对表中元素先排序构成有序表,试求在等概率情况下对此有序表进行折半查找时查找成功的平均查找长度。

(10分)

《数据结构》作业四

得分:

一、填空题(每空1分,共32分)

1.在对一组记录(50,40,95,20,15,70,60,45,80)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置需比较次。

2.对n个元素的序列进行冒泡排序,最少的比较次数是,此时元素的排列情况,在的情况下比较次数最多,其比较次数为。

3.在对一组记录(50,40,Q5,20,15,70,60,45,80)进行直接选择排序时,第4次交换和选择后,未排序记录(即无序表)为。

4.在对一组记录(50,40,95,20,15,70,60,45,80)进行堆排序时,根据初始记录构成初始堆后,最后4条记录为。

5.在对一组记录(50,40,95,20,15,70,60,45,80)进行冒泡排序时,第一趟需进行相邻记录的交换的次数为,在整个排序过程中共需进行趟才可完成。

6.在利用快速排序方法对一组记录(50,40,95,20,15,70,60,45,80)进行快速排序后递归调用使用的栈所能达到的最大深度为,其需递归调用的次数为,其中第二次递归调用是对一组记录进行快速排序。

7.在归并排序中,若待排序记录的个数为20,则共需要进行趟归并,在第三趟归并中,是把长度为的有序表归并为长度为的有序表。

8.在堆排序和快速排序中,若原始记录接近正序或反序,则选用,若原始记录无序,则最好选用。

9.在直接插入和直接选择排序中,若初始数据基本有序,则选用,若初始数据基本反序,则选用。

10.在堆排序,快速排序和归并排序中,若从节省存储空间考虑,则应首先选取方法,其次选取方法,最后选取方法:

若只从扑序结果的稳定性考虑,则应选择方法;若只从平均情况下排序的速度来考虑,则选择方法;若只从最坏情况下排序最快并且要节省内存考虑,则应选取方法。

11.在内部排序中,平均比较次数最少的是求附加的内存容量最大的是,排序时不稳定的有,,,

等几种方法

12.索引顺序文件既能进行存取,又能进行存取,因而是最常用的文件组织方法之一,通常用结构来组织索引。

二、单项选择题:

(每空2分,共40分)

1.从未排序序列中依次取出元素与已排序序列中的元素作比较,将其放入已排序序列中

的正确位置上,此方法称为()。

A.归并排序B.选择排序

C.交换排序D.插入排序

2.从未排序序列中挑选元素,并将其放入己排序序列的一端,此方法称为()。

A.归并排序B.选择排序

C.交换排序D.插入排序

3.依次将每两个相邻的有序表合并成一个有序表的排序方法叫做()。

A.归并排序B.选择排序

C.交换排序D.插入排序

4.在所有排序方法中,关键字的比较次数与记录的初始排列无关的是()。

A.Shell排序B.冒泡排序

C.直接插入排序D.直接选择排序

5.在直接选择排序中,记录比较次数为()数量级。

A.O(n)B.O(log2n)

C.O(n2)D.O(log2n)

6.一组记录的关键字为(45,80,55,40,42,85),则利用堆排序的方法建立的初始堆为()。

A.(80,45,55,40,42,85)B.(85,80,55,40,42,45)

C.(85,80,55,45,42,40)D.(85,55,80,42,45,40)

7.直接插入排序和冒泡排序的时间复杂度为()。

A.O(n)B.O(log2n)

C.O(nlog2n)D.O(n2)

8.一组记录的关键字为(45,80,55,40,42,85),则利用快速排序的方法,以第一个记录为基准得到一次划分结果是()。

A.(40,42,45,55,80,85)B.(42,40,45,80,55,85)

C.(42,40,45,55,DO,85)D.(42,40,45,85,55,80)

9.每次把待排序的元素划分为左、右两个子区间,其中左区间中元素的关键字均小于等于基准元素的关键字,右区间中元素的关键字均大于等于基准元素的关键字,则此排序方法叫做()。

A.堆排序B.快速排序

C.冒泡排序D.Shell排序

10.一组记录的关键字为(25,50,15,35,80,85,20,40,36,70),其中含有5个长度为2的有序表,用归并排序方法对该序列进行一趟归并后的结果为()。

A.15,25,35,50,20,40,80,85,36,70

B.15,25,35,50,80,20,85,40,70,36

C.15,25,50,35,80,85,20,36,40,70

D.15,25,35,50,80,20,36,40,70,85

11.设关键字序列为(3,7,6,9,7,1,4,5,20),对其进行排序的最小交换次数是()。

A.6B.7

C.8D.20

12.快速排序在()情况下最易发挥其长处。

A.被排序的数据量很大B.被排序的数据已基本有序

C.被排序的数据完全无序D.被排序的数据中最大的值与最小值相差不大。

13.倒排文件的主要优点是()。

A.便于进行插入和删除运算B.便于节省存储空间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1