当前位置:文档之家› 数据结构与算法分析习题及参考答案

数据结构与算法分析习题及参考答案

数据结构与算法分析习题及参考答案
数据结构与算法分析习题及参考答案

四川大学计算机学院

《数据结构与算法分析》课程模拟试卷及参考答案

模拟试卷一

一、 单选题(每题 2 分,共20分) 1. 以下数据结构中哪一个是线性结构?( )

A. 有向图

B. 队列

C. 线索二叉树

D. B 树

2. 在一个单链表HL 中,若要在当前由指针p 指向的结点后面插入一个由q 指向的结点,

则执行如下( )语句序列。

A. p=q; p->next=q;

B. p->next=q; q->next=p;

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

D. q->next=p->next; p->next=q; 3. 以下哪一个不是队列的基本运算?( )

A. 在队列第i 个元素之后插入一个元素

B. 从队头删除一个元素

C. 判断一个队列是否为空

D.读取队头元素的值

4. 字符A 、B 、C 依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成

( )个不同的字符串?

A.14

B.5

C.6

D.8

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

A . 11 B.35 C. 19 D. 53 以下6-8题基于图1。

6. 该二叉树结点的前序遍历的序列为( )。

A. E 、G 、F 、A 、C 、D 、B

B. E 、A 、G 、C 、F 、B 、D

C. E 、A 、C 、B 、D 、G 、F

D. E 、G 、A 、C 、D 、F 、B 7. 该二叉树结点的中序遍历的序列为( )。

A. A 、B 、C 、D 、E 、G 、F

B. E 、A 、G 、C 、F 、B 、D

C. E 、A 、C 、B 、D 、G 、F

E. B 、D 、C 、A 、F 、G 、E

8. 该二叉树的按层遍历的序列为( )。

A .E 、G 、F 、A 、C 、D 、

B B. E 、A 、

C 、B 、

D 、G 、F

C. E 、A 、G 、C 、F 、B 、D

D. E 、G 、A 、C 、D 、F 、B

E A G C

B D F 图1

9.下面关于图的存储的叙述中正确的是( )。

A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关

B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关

C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关

D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建

堆的结果?( )

A. a,g,h,m,n,p,q,x,z

B. a,g,m,h,q,n,p,x,z

C. g,m,q,a,n,p,x,h,z

D. h,g,m,p,a,n,q,x,z

二、填空题(每空1分,共26分)

1.数据的物理结构被分为_________、________、__________和___________四种。

2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________,

在表尾插入元素的时间复杂度为____________。

3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________;

删除一个结点时,需要执行的操作是______________________________(假设栈不空而

且无需回收被删除结点)。

4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左孩

子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有双

亲,则双亲结点的编号为________。

5.当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整

到____________位置为止。

6.以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为________。

7.表示图的三种常用的存储结构为_____________、____________和_______________。

8.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K %7

作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。

9.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为

____________,空间复杂度为___________。

10.在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为________

个,其子树数目最少为________,最多为________。

三、运算题(每题6 分,共24分)

1.写出下列中缀表达式的后缀形式:

(1)3X/(Y-2)+1

(2)2+X*(Y+3)

2.试对图2中的二叉树画出其:

(1)顺序存储表示的示意图;

(2)二叉链表存储表示的示意图。

3.判断以下序列是否是小根堆? 如果不是, 将它调

图2 整为小根堆。

(1){ 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 }

(2){ 05, 23, 20, 28, 40, 38, 29, 61, 35, 76, 47, 100 }

4.已知一个图的顶点集V和边集E分别为:

V={1,2,3,4,5,6,7};

E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,

(4,7)20,(5,6)18,(6,7)25};

按照普里姆算法从顶点1出发得到最小生成树,试写出在最小生成树中依次得到的各条边。

四、阅读算法(每题7分,共14分)

1.void AE(Stack& S){

InitStack(S);

Push(S,3);

Push(S,4);

int x=Pop(S)+2*Pop(S);

Push(S,x);

int i,a[5]={1,5,8,12,15};

for(i=0;i<5;i++) Push(S,2*a[i]);

while(!StackEmpty(S)) cout<

}

该算法被调用后得到的输出结果为:

2.void ABC (BTNode *BT,int &c1,int &c2) {

if (BT !=NULL ) {

ABC(BT->left,c1,c2);

c1++;

if (BT->left==NULL&&BT->right==NULL) c2++;

ABC(BT->right,c1,c2);

}//if

}

该函数执行的功能是什么?

五、算法填空(共8分)

向单链表的末尾添加一个元素的算法。

Void InsertRear(LNode*& HL,const ElemType& item)

{

LNode* newptr;

newptr=new LNode;

If (______________________)

{

cerr<<"Memory allocation failare!"<

exit(1);

}

________________________=item;

newptr->next=NULL;

if (HL==NULL)

HL=__________________________;

else{

LNode* P=HL;

While (P->next!=NULL)

____________________;

p->next=newptr;

}

}

六、编写算法(共8分)

编写从类型为List的线性表L中将第i个元素删除的算法,(假定不需要对i的值进行

有效性检查,也不用判别L是否为空表。)

void Delete(List& L, int i)

模拟试卷一参考答案

一、单选题(每题2分,共20分)

1.B

2.D

3.A

4.B

5.B

6.C

7.A

8.C

9.B 10.B

二、填空题(每空1分,共26分)

1.顺序链表索引散列

2.O(n) O(1)

3.p->next=HS;HS=p HS=HS->next

4.2i 2i+1 ?i/2?(或i/2)

5.向上根

6. 2.9

7.邻接矩阵邻接表边集数组

8. 1 4

9.O(n) O(nlog2n) O(n)

10.?m/2?-1 m-1 ?m/2? m

三、运算题(每题6分,共24分)

1.(1) 3 X * Y 2 - / 1 +

图3

(2) 2 X Y 3 + * +

2.(1)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 8 9

(2)见图3所示:

3.(1)不是小根堆。调整为:{12,65,33,70,24,56,48,92,86,33}

(2)是小根堆。

4.普里姆算法从顶点1出发得到最小生成树为:

(1,2)3, (1,3)5, (1,4)8, (4,6)4, (2,5)10, (4,7)20

四、阅读算法(每题7分,共14分)

1.30 24 16 10 2 10

2.该函数的功能是:统计出BT所指向的二叉树的结点总数和叶子总数

五、算法填空(共8分,每一空2分)

newptr==NULL newptr->=data newptr p=p->next

六、编写算法(8分)

void Delete(List& L, int i)

{

for(int j=i-1;j

L.list[j]=L.list[j+1]; //第i个元素的下标为i-1 L.size--;

}

模拟试卷二

一、单选题(每题2 分,共20分)

1.在一个带有附加表头结点的单链表HL中,若要向表头插入一个由指针p指向的结

点,则执行( )。

A. HL=p; p->next=HL;

B. p->next=HL->next; HL->next=p;

C. p->next=HL; p=HL;

D. p->next=HL; HL=p;

2.若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储()个元素.

A. n

B.n-1

C. n+1

D.不确定

3.下述哪一条是顺序存储方式的优点?()

A.存储密度大 B.插入和删除运算方便

C. 获取符合某种条件的元素方便

D.查找运算速度快

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在600(10),A[3][3]存放位置在

678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置?(脚注(10)表示用10进制表示,m>3)

A.658 B.648 C.633 D.653

5.下列关于二叉树遍历的叙述中,正确的是( ) 。

A. 若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点

B.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点

C.若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点

D.若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点

6.k层二叉树的结点总数最多为( ).

A.2k-1 B.2K+1 C.2K-1 D. 2k-1

7.对线性表进行二分法查找,其前提条件是( ).

A.线性表以链接方式存储,并且按关键码值排好序

B.线性表以顺序方式存储,并且按关键码值的检索频率排好序

C.线性表以顺序方式存储,并且按关键码值排好序

D.线性表以链接方式存储,并且按关键码值的检索频率排好序

8.对n个记录进行堆排序,所需要的辅助存储空间为

A. O(1og2n)

B. O(n)

C. O(1)

D. O(n2)

9.对于线性表(7,34,77,25,64,49,20,14)进行散列存储时,若选用H(K)

=K %7作为散列函数,则散列地址为0的元素有()个,

A.1 B.2 C.3 D.4

10.下列关于数据结构的叙述中,正确的是( ).

A.数组是不同类型值的集合

B.递归算法的程序结构比迭代算法的程序结构更为精炼

C.树是一种线性结构

D.用一维数组存储一棵完全二叉树是有效的存储方法

二、填空题(每空1分,共26分)

1.数据的逻辑结构被分为_________、________、__________和___________四种。

2.一个算法的时间复杂度为(3n3+2000n log2n+90)/n2,其数量级表示为________。

3.对于一个长度为n的单链存储的队列,在表头插入元素的时间复杂度为_________,在

表尾插入元素的时间复杂度为____________。

4.假定一棵树的广义表表示为A(D(E,G),H(I,J)),则树中所含的结点数为__________

个,树的深度为___________,树的度为_________。

5.后缀算式79 2 30 + - 4 2 / *的值为__________。中缀算式(3+X*Y)-2Y/3对

应的后缀算式为_______________________________。

6.在一棵高度为5的理想平衡树中,最少含有_______个结点,最多含有_______个结点。

7.在树中,一个结点的直接后继结点称为该结点的________。一个结点的直接前趋结点称

为该结点的________。

8.在一个具有10个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的

有向完全图中,包含有________条边。

9.假定一个线性表为(12,17,74,5,63,49,82,36),若按Key % 4条件进行划分,使得同一余数

的元素成为一个子表,则得到的四个子表分别为____________________________、___________________、_______________________和__________________________。

10.对一棵B_树进行删除元素的过程中,若最终引起树根结点的合并时,会使新树的高度

比原树的高度___________。

11.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序

过程的时间复杂度为________。

12.在线性表的散列存储中,装填因子α又称为装填系数,若用m表示散列表的长度,n表

示待散列存储的元素的个数,则α等于________。

三、运算题(每题6 分,共24分)

1.在如下数组A中链接存储了一个线性表,表头指针存放在A [ 0].next,试写出该线性表。

A 0 1 2 3 4 5 6 7

data 60 50 78 90 34 40

next 4 0 5 2 7 1 3

2.已知一棵二叉树的前序遍历的结果是ABKCDFGHIJ, 中序遍历的结果是KBCDAFHIGJ, 试画出这棵二叉树。

3.已知一个图的顶点集V为:V={1,2,3,4,5,6,7};

其共有10条边。该图用如下边集数组存储:

起点 1 2 2 5 5 2 2 6 1 3

终点 6 4 5 4 7 6 7 7 7 5

权 1 1 2 2 2 3 3 4 5 7

试用克鲁斯卡尔算法依次求出该图的最小生成树中所得到的各条边及权值。

4.画出向小根堆中加入数据4, 2, 5, 8, 3, 6, 10, 1时,每加入一个数据后堆的变化。

四、阅读算法(每题7分,共14分)

1.在下面的每个程序段中,假定线性表La的类型为List,元素类型ElemType为int,

并假定每个程序段是连续执行的。试写出每个程序段执行后所得到的线性表La。

(1)InitList(La);

Int a[]={100,26,57,34,79};

For (i=0;i<5;i++)

Insert(La,a[i]);

TraverseList(La);

(2)DeleteFront(La);

InsertRear(La, DeleteFront(La));

TraverseList(La);

(3)ClearList(La);

For (i=0;i<5;i++)

InsertFront(La,a[i]);

TraverseList(La);

2.现面算法的功能是什么?

void ABC(BTNode * BT)

{

if BT {

cout<data<<' ';

ABC(BT->left);

ABC(BT->right);

}

}

五、算法填空(共8分)

二分查找的递归算法。

Int Binsch(ElemType A[],int low,int high,KeyType K)

{

if ___________________{

int mid=(low+high)/2;

if (_____________________) return mid; //查找成功,返回元素的下标 else if (K

return Binsch(A,low,mid-1,K); //在左子表上继续查找 else return_____________________________; //在右子表上继续查找 }

else ________________; //查找失败,返回-1

}

六、编写算法(共8分)

HL为单链表的表头指针,试写出在该单链表中查找具有给定的元素item的算法。

bool Find(LNode* HL, ElemType &item)

模拟试卷二参考答案

一、单选题(每题2分,共20分)

1.B

2.B

3.A

4.C

5.D

6.A

7.C

8.C

9.D 10.D

二、填空题(每空1分,共26分)

1.集合结构线性结构树结构图结构

2.O(n)

3.O(1) O(1)

4.7 2 2

5.94 3 X Y * + 2 Y * 3 / -

6.16 31

7.孩子(或子)结点双亲(或父)结点

8.45 n(n-1)

9. (12,36) (17,5,49) (74,82) (63) 10. 减少1(或减少) 11. O(log 2n) O(nlog 2n) 12. n/m 三、 运算题(每题6分,共24分) 1. 线性表为:(90,40,78,50,34,60)

2. 当前序序列为ABKCDFGHIJ ,中序序列为KBCDAFHIGJ 时,逐步形成二叉树的过程

如下图4所示:

图4

3. 用克鲁斯卡尔算法得到的最小生成树为:

(1,6)1, (2,4)1, (2,5)2, (5,7)2, (2,6)3, (3,5)7 4. 见图5。

图5

四、 阅读算法(每题7分,共14分) 1. (1) La=(26,34,57,79,100)

(2)La=(57,79,100,34) (3)La=(79,34,57,26,100) 2. 前序遍历链式存储的二叉树。 五、 算法填空(每空2分,共8 分)

(low<=high) K==A[mid].key Binsch(A,mid+1,hight,K) return -1 六、 编写算法(8分)

bool Find(LNode* HL, ElemType &item) {

LNode* p=HL; while p

if (p->data==item){ return true; }

else p=p->next;

KBCD FHIGJ

A A

B K F CD HIGJ A B K F

C

D G J HI A B K F

C D G J

H I

4 4 4 4 4 2 2 2

5 5 5 2 2 8 8 4 3 5 2 8 3 4 5 2 8 3 4

6 5 2 8 3 4 6 10 5 1 3 2 4 6 10 8

return false;

}

模拟试卷三

一、单选题(每题2 分,共20分)

1.对一个算法的评价,不包括如下()方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度

2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。

A. p->next=HL->next; HL->next=p;

B. p->next=HL; HL=p;

C. p->next=HL; p=HL;

D. HL=p; p->next=HL;

3.对线性表,在下列哪种情况下应当采用链表表示?( )

A.经常需要随机地存取元素

B.经常需要进行插入和删除操作

C.表中元素需要占据一片连续的存储空间

D.表中元素的个数不变

4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( )

A. 2 3 1

B. 3 2 1

C. 3 1 2

D. 1 2 3

5.AOV网是一种()。

A.有向图B.无向图C.无向无环图D.有向无环图

6.采用开放定址法处理散列表的冲突时,其平均查找长度()。

A.低于链接法处理冲突 B. 高于链接法处理冲突

C.与链接法处理冲突相同D.高于二分查找

7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。

A.值B.函数C.指针D.引用

8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。

A.行号B.列号C.元素值D.非零元素个数

9.快速排序在最坏情况下的时间复杂度为()。

A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2)

10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。

A. O(n)

B. O(1)

C. O(log2n)

D. O(n2)

二、运算题(每题6 分,共24分)

1.数据结构是指数据及其相互之间的______________。当结点之间存在M对N(M:N)

的联系时,称这种结构为_____________________。

2.队列的插入操作是在队列的_________进行,删除操作是在队列的__________进行。

3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件

是_____________________。

4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为_________,

在表尾插入元素的时间复杂度为____________。

5.设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j

从0到3 ,则二维数组W的数据元素共占用_______个字节。W中第6 行的元素和第4 列的元素共占用_________个字节。若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为__________。

6.广义表A= (a,(a,b),((a,b),c)),则它的深度为____________,它的长度为____________。

7.二叉树是指度为2的____________________树。一棵结点数为N的二叉树,其所有结

点的度的总和是_____________。 8. 对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个______________。对一棵由

算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的__________________。

9. 对于一棵具有n 个结点的二叉树,用二叉链表存储时,其指针总数为_____________个,

其中_______________个用于指向孩子,_________________个指针是空闲的。 10. 若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A

中,即编号为0的结点存储到A[0]中。其余类推,则A[ i ]元素的左孩子元素为________,右孩子元素为_______________,双亲元素为____________。

11. 在线性表的散列存储中,处理冲突的常用方法有________________________和

_____________________________两种。 12. 当待排序的记录数较大,排序码较随机且对稳定性不作要求时,宜采用_______________

排序;当待排序的记录数较大,存储空间允许且要求排序是稳定时,宜采用________________________排序。

三、 运算题(每题6分,共24分)

1. 已知一个6?5稀疏矩阵如右所示,试:

(1) 写出它的三元组线性表; (2) 给出三元组线性表的顺序存储表示。 2. 设有一个输入数据的序列是 { 46, 25, 78, 62, 12, 80 }, 试画出从空树起,逐个输入各个数据而生成的二叉搜索树。 3. 对于图6所示的有向图若存储它采用邻接表,并且每个顶点邻

接表中的边结点都是按照终点序号从小到大的次序链接的,试写出: (1) 从顶点①出发进行深度优先搜索所得到的深度优先生成树; (2) 从顶点②出发进行广度优先搜索所得到的广度优先生成树; 4. 已知一个图的顶点集V 和边集E 分别为: V={1,2,3,4,5,6,7};

E={<2,1>,<3,2>,<3,6>,<4,3>,<4,5>,<4,6>,<5,1>,<5,7>,<6,1>,<6,2>,<6,5>};

若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,按主教材中介绍的拓朴排序算法进行排序,试给出得到的拓朴排序的序列。 四、 阅读算法(每题7分,共14分) 1. int Prime(int n)

{ int i=1;

int x=(int) sqrt(n);

while (++i<=x)

if (n%i==0) break; if (i>x) return 1; else return 0; }

??

?

?

??

?

?

????????????--00700000052000000010000001000

0 图6

(1)指出该算法的功能;

(2)该算法的时间复杂度是多少?

2.写出下述算法的功能:

void AJ(adjlist GL, int i, int n)

{

Queue Q;

InitQueue(Q);

cout<

visited[i]=true;

QInsert(Q,i);

while(!QueueEmpty(Q)) {

int k=QDelete(Q);

edgenode* p=GL[k];

while(p!=NULL)

{

int j=p->adjvex;

if(!visited[j])

{

cout<

visited[j]=true;

QInsert(Q,j);

}

p=p->next;

}

}

}

五、算法填空(共8分)

如下为二分查找的非递归算法,试将其填写完整。

Int Binsch(ElemType A[ ],int n,KeyType K)

{

int low=0;

int high=n-1;

while (low<=high)

{

int mid=_______________________________;

if (K==A[mid].key) return mid; //查找成功,返回元素的下标

else if (K<[mid].key)

______________________________________; //在左子表上继续查找

else __________________________________; //在右子表上继续查找}

return -1; //查找失败,返回-1

}

六、编写算法(共8分)

HL是单链表的头指针,试写出删除头结点的算法。

ElemType DeleFront(LNode * & HL)

模拟试卷三参考答案

一、单选题(每题2分,共20分)

1.B

2.A

3.B

4.C

5.D

6.B

7.D

8.A

9.D 10.C

二、填空题(每空1分,共26分)

1.联系图(或图结构)

2.尾首

3.top==0

4.O(1)O(n)

5.128 44 108

6. 3 3

7.有序n-1

8.有序序列后缀表达式(或逆波兰式)

9.2n n-1 n+1

10.2i+1 2i+2 (i-1)/2

11.开放定址法链接法

12.快速归并

三、运算题(每题6分,共24分)

1.(1)((1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7)) (3分)

(2)三元组线性表的顺序存储表示如图7示。

2.如图8所示。

3.DFS:①②③④⑤

BFS:②③④⑤①

4.拓朴排序为:4 3 6 5 7 2 1

四、阅读算法(每题7分,共14分)

1.(1) 判断n是否是素数(或质数)

(2)O(n)

2.功能为:从初始点v i出发广度优先搜索由邻接表GL所表示的图。

五、算法填空(8 分)

(low+high)/2 high=mid-1 low=mid+1

六、编写算法(8分)

ElemType DeleFront(LNode * & HL)

{

if (HL==NULL){

cerr<<"空表"<

5

1 5 1

3 2 -1

4 5 -2

5 1 5

6 3 7

图7

图8

exit(1);

}

LNode* p=HL;

HL=HL->next;

ElemType temp=p->data;

delete p;

return temp;

}

模拟试卷四

一、单选题(每题2 分,共20分)

1.以下数据结构中哪一个是线性结构?( )

A. 有向图

B. 栈

C. 二叉树

D. B树

2.若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采

用( )存储方式最节省时间。

A.单链表

B.双链表

C.带头结点的双循环链表

D.单循环链表

3.以下哪一个不是队列的基本运算?()

A. 在队列第i个元素之后插入一个元素

B. 从队头删除一个元素

C. 判断一个队列是否为空

D.读取队头元素的值

4.字符A、B、C、D依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以

组成( )个不同的字符串?

A.15

B.14

C.16

D.21

5.由权值分别为4,7,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。

A. 11 B.37 C. 19 D. 53

以下6-8题基于下面的叙述:若某二叉树结点的中序遍历的序列为A、B、C、D、E、

F、G,后序遍历的序列为B、D、C、A、F、

G、E。

6.则该二叉树结点的前序遍历的序列为( ).

A. E、G、F、A、C、D、B

B. E、A、G、C、F、B、D

C. E、A、C、B、D、G、F

D. E、G、A、C、D、F、B

7.该二叉树有()个叶子。

A.3 B.2 C.5 D.4

8.该二叉树的按层遍历的序列为( )

A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F

C. E、A、G、C、F、B、D

D. E、G、A、C、D、F、B

9.下面的二叉树中,( )不是完全二叉树。

10.设有关键码序列(q,g,m,z,a),下面哪一个序列是从上述序列出发建的小根堆的结

果?( )

A. a,g,m,q, z

B. a,g,m,z,q

C. g,m,q,a,z

D. g, m, a,q,z

二、填空题(每空1分,共26分)

1.数据结构是指数据及其相互之间的______________。当结点之间存在1对N(1:N)

的联系时,称这种结构为_____________________。

2.一个广义表中的元素分为________元素和________元素两类。

3.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________,

在表尾插入元素的时间复杂度为____________。

4.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是_________________;

删除一个结点时,需要执行的操作是___________________________(假设栈不空而且无需回收被删除结点)。

5.栈又称为_______________表,队列又称为___________表。

6.在稀疏矩阵所对应的三元组线性表中,每个三元组元素按_________为主序、_________

为辅序的次序排列。

7.若一棵二叉树中只有叶子结点和左、右子树皆非空的结点,设叶结点的个数为K,则左、

右子树皆非空的结点个数是________。

8.以折半(或二分)查找方法从长度为8的有序表中查找一个元素时,平均查找长度为

________。

9.表示图的三种常用的存储结构为_____________、____________和_______________。

10.对于线性表(78,4,56,30,65)进行散列存储时,若选用H(K)=K %5作为散列

函数,则散列地址为0的元素有________个,散列地址为4的有_______个。

11.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为

____________,空间复杂度为___________。

12.在n个带权叶子结点构造出的所有二叉树中,带权路径长度最小的二叉树称为

________。WPL称为_____________________。

13.在索引表中,若一个索引项对应主表的一个记录,则此索引为__________索引,若对

应主表的若干条记录,则称此索引为________索引。

三、运算题(每题6 分,共24分)

1.写出下列中缀表达式的后缀形式:

(1)3X/(Y-2H)+1

(2)2+X*(Y+3)

2.假定一棵二叉树广义表表示为a(b(c),d(e,f)),分别写出对它进行先序、中序、后序、按

层遍历的结果。

先序:

中序:

后序:

按层:

3. 已知一个无向图的顶点集为{a, b, c, d, e} ,其邻接矩阵如下所示

0100110010000110110110110??????????

??????

(1) 画出该图的图形;

(2)根据邻接矩阵从顶点a 出发进行深度优先遍历和广度优先遍历,写出相应的遍历序列。

4. 已知一个图的顶点集V 和边集E 分别为:

V={0,1,2,3,4,5,6,7};

E={(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(3,6)10, (4,6)4,(5,7)20};

按照普里姆算法从顶点0出发得到最小生成树,试写出在最小生成树中依次得到的各条边。 四、 阅读算法(每题7分,共14分) 1. void AE(Stack& S){ InitStack(S); Push(S,3); Push(S,4); int x=Pop(S)+2*Pop(S); Push(S,x); int i,a[5]={2,5,8,22,15}; for(i=0;i<5;i++) Push(S,a[i]); while(!StackEmpty(S)) cout<

该算法被调用后得到的输出结果为:

2. int akm ( unsigned m, unsigned n ) { if ( m == 0 ) return n+1; else if ( n == 0 ) return akm ( m-1, 1 ); else return akm ( m-1, akm ( m, n-1 ) );

}

该函数执行的功能是什么? 五、 算法填空(共8分) 二叉搜索树的查找——非递归算法

bool Find(BTreeNode* BST,ElemType& item)

{while(BST(!=NULL){

if (item==______________){ item=BST->data;//查找成功 return true;}

else if(itemdata)

BST=BST->_____________;

a b c d e

else BST=BST->_____________;

}//while

return _____________;//查找失败

}

六、编写算法(共8分)

用递归的算法编写出对存入在a[n+1]数组中的n个有序元素进行二分(又称折半)查找(假定a[0]单元不用)的程序。

int halfsearch(SSTable *a, KeyType k,int low,int high)

模拟试卷四参考答案

一、单选题(每题2分,共20分)

1.B

2.C

3.A

4.B

5.B

6.C

7.A

8.C

9.C 10.B

二、填空题(每空1分,共26分)

1.联系树(或树结构)

2.单(子)表

3.O(n) O(1)

4.p->next=HS;HS=p HS=HS->next

5.先进后出先进先出

6.行列

7.k-1

8. 2.625

9.邻接矩阵邻接表边集数组

10.2 1

11.O(n) O(nlog2n) O(n)

12.哈夫曼树带权路径长度

13.稠密稀疏

三、运算题(每题6分,共24分)

1.(1) 3 X * Y 2 H *- / 1 +

(2) 2 X Y 3 + * +

2.先序:a,b,c,d,e,f

中序: c,b,a,e,d,f

后序: c,b,e,f,d,a

按层:a,b,d,c,e,f

3.(1)该图的图形如图9示:

(2)深度优先遍历序列为:abdce

广度优先遍历序列为:abedc

4.普里姆:(0,3)2, (0,2)5, (0,1)8, (1,5)6, (3,6)10, (6,4)4, (5,7)20

四、阅读算法(每题7分,共14分)

3.15 22 8 5 2 10

4.该函数的功能是:

求:akm m n

n m

akm m m n

akm m akm m n m n (,)(,),

(,(,)),

=

+=

-≠=

--≠≠

?

?

?

?

?

10

1100

1100

当时

当时

当时

图9

五、算法填空(共8分,每一空2分)

BST->data left right false

六、编写算法(8分)

递归算法:

int halfsearch(SSTable *a, KeyType k,int low,int high)

{ if (low>high)

return 0;

else {

int mid=(low+high)/2

if EQ(k,a[mid].key) return mid;

else if LT(k,a[mid].key) return halfsearch(a,k,low,mid-1);

else return halfsearch(a,k,mid+1,high);

}

}

模拟试卷五

一、单选题(每题2 分,共20分)

1.栈和队列的共同特点是( )。

A.只允许在端点处插入和删除元素

B.都是先进后出

C.都是先进先出

D.没有共同点

2.用链接方式存储的队列,在进行插入运算时( ).

A. 仅修改头指针

B. 头、尾指针都要修改

C. 仅修改尾指针

D.头、尾指针可能都要修改

3.以下数据结构中哪一个是非线性结构?( )

A. 队列

B. 栈

C. 线性表

D. 二叉树

4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在

676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。

A.688 B.678 C.692 D.696

5.树最适合用来表示( )。

A.有序数据元素

B.无序数据元素

C.元素之间具有分支层次关系的数据

D.元素之间无联系的数据

6.二叉树的第k层的结点数最多为( ).

A.2k-1 B.2K+1 C.2K-1 D. 2k-1

7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二

分查找,则查找A[3]的比较序列的下标依次为( )

A. 1,2,3

B. 9,5,2,3

C. 9,5,3

D. 9,4,2,3

8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为

A. O(1)

B. O(n)

C. O(1og2n)

D. O(n2)

9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)

=K %9作为散列函数,则散列地址为1的元素有()个,

A .1

B .2

C .3

D .4

10. 设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 二、 填空题(每空1分,共26分)

1. 通常从四个方面评价算法的质量:_________、_________、_________和_________。

2. 一个算法的时间复杂度为(n 3+n 2log 2n +14n )/n 2,其数量级表示为________。

3. 假定一棵树的广义表表示为A (C ,D (E ,F ,G ),H (I ,J )),则树中所含的结点数

为__________个,树的深度为___________,树的度为_________。

4. 后缀算式9 2 3 +- 10 2 / -的值为__________。中缀算式(3+4X )-2Y/3对应的后缀算式

为_______________________________。 5. 若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指

针。在这种存储结构中,n 个结点的二叉树共有________个指针域,其中有________个指针域是存放了地址,有________________个指针是空指针。 6. 对于一个具有n 个顶点和e 条边的有向图和无向图,在其对应的邻接表中,所含边结点

分别有_______个和________个。

7. AOV 网是一种___________________的图。 8. 在一个具有n 个顶点的无向完全图中,包含有________条边,在一个具有n 个顶点的有

向完全图中,包含有________条边。

9. 假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的元

素成为一个子表,则得到的四个子表分别为____________________________、___________________、_______________________和__________________________。 10. 向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度

___________。

11. 在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为________,整个堆排序

过程的时间复杂度为________。

12. 在快速排序、堆排序、归并排序中,_________排序是稳定的。 三、 运算题(每题 6 分,共24分)

1. 在如下数组A 中链接存储了一个线性表,表头指针为A [0].next ,试写出该线性表。 A 0 1 2 3 4 5 6 7

data 60 50 78 90 34 40 next 3 5 7 2 0 4

1

2. 请画出图10的邻接矩阵和邻接表。

3. 已知一个图的顶点集V 和边集E 分别为: V={1,2,3,4,5,6,7};

E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};

用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。

4. 画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。 四、 阅读算法(每题7分,共14分)

1. LinkList mynote(LinkList L)

{//L 是不带头结点的单链表的头指针 if(L&&L->next){

q=L ;L=L ->next ;p=L ;

图10

S1:while(p->next) p=p->next;

S2:p->next=q;q->next=NULL;

}

return L;

}

请回答下列问题:

(1)说明语句S1的功能;

(2)说明语句组S2的功能;

(3)设链表表示的线性表为(a1,a2, …,a n),写出算法执行后的返回值所表示的线性表。

2.void ABC(BTNode * BT)

{

if BT {

ABC (BT->left);

ABC (BT->right);

cout<data<<' ';

}

}

该算法的功能是:

五、算法填空(共8分)

二叉搜索树的查找——递归算法:

bool Find(BTreeNode* BST,ElemType& item)

{

if (BST==NULL)

return false; //查找失败

else {

if (item==BST->data){

item=BST->data;//查找成功

return ___________;}

else if(itemdata)

return Find(______________,item);

else return Find(_______________,item);

}//if

}

六、编写算法(共8分)

统计出单链表HL中结点的值等于给定值X的结点数。

int CountX(LNode* HL,ElemType x)

模拟试卷五参考答案

一、单选题(每题2分,共20分)

1.A

2.D

3.D

4.C

5.C

6.D

7.D

8.C

9.D 10.A

二、填空题(每空1分,共26分)

1. 正确性 易读性 强壮性 高效率

2. O(n)

3. 9 3 3

4. -1 3 4 X * + 2 Y * 3 / -

5. 2n n-1 n+1

6. e 2e

7. 有向无回路

8. n(n-1)/2 n(n-1)

9. (12,40) ( ) (74) (23,55,63) 10.增加1

11.O(log 2n) O(nlog 2n) 12.归并 三、 运算题(每题6分,共24分)

1. 线性表为:(78,50,40,60,34,90)

2. 邻接矩阵:???

????

?

?????

???011101010111011

1010101110

邻接表如图11所示:

图11

3. 用克鲁斯卡尔算法得到的最小生成树为: (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)20

4. 见图12

4

4

4

4

4

2

2

2

5

5

5

2

2

8

8 4 3 2

力 扣 数 据 结 构 与 算 法

前端如何搞定数据结构与算法(先导篇) 「观感度:?」 「口味:锅包肉」 「烹饪时间:20min」 本文已收录在Github? 为什么要学习数据结构与算法? 在0202年的今天,由于每天被无数的信息轰炸,大多数人已经变得越来越浮躁了,并且丧失了独立思考的能力。 你可能会经常听到这样的感慨: 技术人究竟能走多远?我遇到了天花板 35岁的程序员要如何面对中年危机? 技术更新太快,好累,学不动了 然后,你也变得焦虑起来。那你有没有静下心来想过,如何才能抵御年龄增长并且使自己增值呢? 无非是终身学习,持续修炼自己的内功。内功也就是基础知识和核心概念,这些轰轰烈烈发展的技术本质,其实都是基础知识,也就是我们在大学里学过的基础课-程。 操作系统 计算机组成原理 计算机网络 编译原理

设计模式 数据结构与算法 这也就是为什么越靠谱的面试官越注重你基础知识的掌握程度,为什么越牛的的企业越重视你的算法能力。因为当你拥有了这些,你已经比大多数人优秀了。你的天花板由你自己来决定,大家口中的中年危机可能并不会成为你的危机。新技术来临时,你对它的本质会看得更加透彻,学起来会一通百通。这样的人才,公司培养你也会花费更少的成本。 (不过,一辈子做个开开心心的 CRUD Boy 也是一种选择。) 数据结构与算法之间的关系 Rob Pikes 5 Rules of Programming中的第五条是这样说的: Data dominates. If youve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. 数据占主导。如果您选择了正确的数据结构并组织得当,那么这些算法几乎总是不言而喻的。数据结构而非算法是编程的核心。 瑞士计算机科学家,Algol W,Modula,Oberon 和 Pascal 语言的设计师 Niklaus Emil Wirth 写过一本非常经典的书《Algorithms + Data Structures = Programs》,即算法 + 数据结构 = 程序。 我们可以得出结论,数据结构与算法之间是相辅相成的关系。数据结构服务于算法,算法作用于特定的数据结构之上。 数据结构与算法好难,怎么学?

程序设计典型例题解析(2)

程序设计典型例题解析(2)

典型例题解析(2) 一、填空题 1.以顺序输入模式打开“c:\source1.txt”文件的命令是(1);以输出方式打开“c:\source2.txt”文件的命令是(2)。 分析:Print # 语句用于将把数据写入文件中。Print语句格式为: Open 文件名 [For模式] As [#] 文件号 “For 模式”为指定打开文件的模式是数据的输入模式还是输出模式。 结论:答案应为:(1)Open "c:\source1.txt" For Input As #1 (2)Open "c:\source2.txt" For Output As #2 2.在Visual Basic中,文件系统控件包括(1)、(2)和文件列表框(FileListBox)。三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 分析:在Visual Basic中,文件系统控件包括驱动器列表框(DriveListBox)、目录列表

框(DirListBox)和文件列表框(FileListBox)。驱动器列表框可以选择或设置一个驱动器,目录列表框可以查找或设置指定驱动器中的目录,文件列表框可以查找指定驱动器指定目录中文件信息,三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 结论:答案应为:(1)驱动器列表框(DriveListBox)(2)目录列表框(DirListBox) 3.每次重新设置驱动器列表框的Drive属性时,都将引发(1)事件。可在该事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。 分析:在Visual Basic中,每次重新设置驱动器列表框的Drive属性时,都将引发Change事件。可在Change事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。驱动器列表框的默认名称为Drive1,其Change事件过程的开头为Drive1_Change()。 结论:答案应为:(1)Change 4.目录列表框用来显示当前驱动器下目录

数据结构与算法习题及答案

第1章绪论 习题 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 4.存储结构由哪两种基本的存储方法实现 5.选择题 (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)以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 6.试分析下面各程序段的时间复杂度。 (1)x=90;y=100; while(y>0) if(x>100) {x=x-10;y--;} elsex++; (2)for(i=0;i

数据结构与算法C语言版期末复习题

《数据结构与算法》期末复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

[第1题-60题汇总]微软数据结构+算法面试100题

精选微软等公司数据结构 精选微软等公司数据结构++算法面试100题 -----[第1题-60题总] 资源说明: 此份,是为微软等公司数据结构+算法面试100题,之前60题的汇总。 总结整理了前第1题-第60题。特此并作此一份上传。以飨各位。:)。 -------------------------------- 相关资源,包括答案,下载地址: [答案V0.2版]精选微软数据结构+算法面试100题[前20题]--答案修正 https://www.doczj.com/doc/613640601.html,/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 [答案V0.1版]精选微软数据结构+算法面试100题[前25题] https://www.doczj.com/doc/613640601.html,/source/2796735 [第二部分]精选微软等公司结构+算法面试100题[前41-60题]: https://www.doczj.com/doc/613640601.html,/source/2811703 [第一部分]精选微软等公司数据结构+算法经典面试100题[1-40题] https://www.doczj.com/doc/613640601.html,/source/2778852 更多资源,下载地址: http://v_july_https://www.doczj.com/doc/613640601.html,/ 很快,我将公布第21-40题的答案,敬请期待。:).. 如果你对以下的前第1-60题,有好的思路,和算法,欢迎跟帖回复, 或者,联系我,发至我的邮箱, zhoulei0907@https://www.doczj.com/doc/613640601.html,。 My CSDN Blog:https://www.doczj.com/doc/613640601.html,/v_JULY_v My sina Blog:https://www.doczj.com/doc/613640601.html,/shitou009 帖子维护地址: [整理]算法面试:精选微软经典的算法面试100题[前1-60题] https://www.doczj.com/doc/613640601.html,/u/20101023/20/5652ccd7-d510-4c10-9671-307a56006e6d.html -------------------------------------- July、2010、/11.12.请享用。:)。 1

编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析 一、是非题(请在括号内,正确的划√,错误的划×) 1.编译程序是对高级语言程序的解释执行。(× ) 2.一个有限状态自动机中,有且仅有一个唯一的终态。(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。(× ) 二、选择题 1.词法分析器的输出结果是_____。 A.( ) 记号B.( ) 相应条目在符号表中的位置 C.( ) 记号和属性二元组D.( ) 属性值 2.正规式M 1 和M 2 等价是指_____。 ! A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.语言是 A.句子的集合B.产生式的集合 C.符号串的集合D.句型的集合 4.编译程序前三个阶段完成的工作是 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析 C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码优化 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 [ A.字符B.单词C.句子D.句型 6.构造编译程序应掌握______。 A.( )源程序B.( ) 目标语言 C.( ) 编译方法D.( ) 以上三项都是 7.词法分析的任务是 A.识别单词B.分析句子的含义 C.识别句子D.生成目标代码 三、填空题 1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。 3.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。 ? 6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。 17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。 1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序

计算机学院数据结构与算法分析期末试题(2007级B)_无答案

四川大学期末考试试题 (2008-2009学年第1学期) 课程号:课程名称:数据结构与算法分析(B卷)任课教师: 1.数据类型为()。 A)数据项的集合B)值的集合及定义在其上的一组操作的总称 C)数据元素的集合D)关键字的集合 2.链表不具有的特点是()。 A)可随机直接访问任一元素B)插入删除不需要移动元素 C)不必事先估计元素个数D)所需空间与线性表长度成正比 3.设一个栈的入栈序列是ABCD,则借助于一个栈所得到的出栈序列不可能是()。 A)ABCD B)DCBA C)ABCD D)DABC 4.将对称矩阵A nxn压缩存储在一维数组B[m]中,则m的值至少为()。 A)n(n+1)/2 B)n(n-1)/2 C)n(n+1) D)n2 5.设二叉树中有n2个度为2的结点,n1个度为1的结点,n0个叶子结点,则此二叉树中空指针域个数为()。 A)n0+n1+n2 B)n2+n1+2n0 C)2n2+n1D)2n0+n1 6.对于具有n个顶点的强连图,其弧条数的最小值为()。 A)n+1 B)n C)n-1 D)n-2 7.一棵深度为k的平衡二叉树,其每个非终端结点的平衡因子均为0,则该树共有()个结点。 A)2k-1-1 B)2k-1C)2k-1+1 D)2k-1 8.归并排序的时间复杂度是()。 A)O(1) B)O(n) C)O(n2) D)O(nlogn) 9.每一趟都能选出一个元素放在其最终位置上,并且不稳定的排序算法是()。 A)冒泡排序B)简单选择排序C)希尔排序D)直接插入排序10.按照二叉树的定义,具有3个结点的不同形态(相似)的二叉树有()种。 A)3 B)4 C)5 D)6 二、(本题10分) 利用两个栈S1、S2模拟一个队列(如客户队列)时,如何用栈的运算实现队列的插入、删除运算,请简述算法思想。 三、(本题10分) 已知一棵二叉树的先序序列与中序序列分别如下,试画出此二叉树。 先序序列:ABCDEFGH IJ 中序序列:CBEDAGHFJI 注:试题字迹务必清晰,书写工整。本题2页,本页为第1页 教务处试题编号:

阿里校园招聘历年经典面试题汇总:算法工程师

阿里校园招聘历年经典面试题汇总:算法工程师 (1)、jvm 原理 (2)、minor GC 与 Full GC (3)、HashMap 实现原理 (4)、java.util.concurrent 包下使用过哪些 (5)、concurrentMap 和 HashMap 区别 (6)、信号量是什么,怎么使用? (7)、阻塞队列了解吗?怎么使用? (8)、JAVA NIO 是什么? (9)、类加载机制是怎样的 (10)、什么是幂等性 (11)、有哪些 JVM 调优经验 (12)、分布式 CAP 了解吗? (13)、hdfs怎么添加Datanode,添加后hdfs会有什么操作? (14)、Hbase 跟关系数据库对比优缺点?为什么 Hbase 索引速度快 (15)、Hbase 大压缩与小压缩区别 (16)、Hive 与 Hbase 的使用场景 (17)、简单说说Spark功能,spark 与hive有无依赖关系? (18)、zookeeper 有什么应用场景,怎么选举的?3 个节点挂掉一个能正常工作吗? (19)、Hbase 中 zookeaper 作用 (20)、Hbase 写操作什么时候返回 (21)、mysql 有哪些存储引擎?各自特点 (22)、用过哪些设计模式?怎样实现线程安全单例模式? (23)、用过哪些RPC框架? (24)、什么是AOP? (25)、决策树算法怎么实现的? (26)、java垃圾回收会出现不可回收的对象吗?怎么解决内存泄露问题?怎么

定位问题源? (27)、终止线程有几种方式?终止线程标记变量为什么是 valotile 类型?(28)、用过哪些并发的数据结构? cyclicBarrier 什么功能?信号量作用?数据库读写阻塞怎么解决? (29)、乐观锁与悲观锁,怎么实现乐观锁? (30)、开发过分布式框架?怎么实现分布式事务? (31)、spark streaming与storm区别? (32)、找到最大子数组的 start,和end下标 (33)、用过 CDH中什么任务调度? (34)、spark streaming时间间隔设置很小会出现什么状况? (35)、搜索引擎了解多少?你认为搜索引擎的难点在哪里? (36)、RPC 了解吗?怎么监控 RPC 状态,找出出现问题的 RPC 连接?(37)、spring 框架了解多少? (38)、flume应用场景 (39)、找出一串字符中第一个不重复字符的下标。 点击查看详细面经〉〉〉〉〉〉〉〉〉〉〉〉 更多精品干货>>>>>>>>>>> 更多阿里机器学习/数据挖掘经典面试题 其他名企机器学习/数据挖掘经典面试题

c语言编程例题与答案解析

实验报告三 (四学时) 2.1 实验目的 (1)掌握函数的定义和调用; (2)了解函数间的参数传送; 2.2 基础实验 【题目3-1】编写函数实现将输入的字母转换成大写字母(若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母”)。 算法分析: 1、输入:通过键盘接收一个字符; 2、条件判断:调用判别函数 3、函数功能为:蒋所输入字符进行判别处理,若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母” 4、程序结束。 【实验3-1】代码及运行结果:

【题目3-2】从键盘输入若干个同学计算机课程期末考试成绩(学生人数可由用户输入),求该课程的期末成绩的平均分并输出。 函数功能要求:实现若干(例如5名)同学的的期末成绩输入,并统计出平均分。 算法分析: 1、输入:通过键盘接收同学个数; 2、调用求平均分函数 3、输出平均成绩 4、程序结束。

【实验3-2】代码及运行结果:

【题目3-3】请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。 算法分析: 1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0 2、编写主函数,用一重循环遍历100以内所有数据 2.1、通过素数判别函数对循环的数据进行是否为素数的判别 2.2、返回判别为真的整数,并输出 3、程序结束。 【实验3-3】代码及运行结果: #include #include int Prime(int x) { int i ; if(x<=1) return 0; for(i=2;i<=x-1;i++) { if(x%i==0) { return 0;

数据结构与算法复习题库含答案

数据结构复习题 第一章概论 一、选择题 1、研究数据结构就是研究( D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。 A. 图 B. 树 C. 广义表 D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 fori0;im;i++ forj0;jn;j++ a[i][j]i*j; A. Om2 B. On2 C. Om*n D. Om+n 6、算法是( D )。

A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。 A. On B. Onlog2n C. On2 D. Olog2n 8、下面程序段的时间复杂度为( C )。 i1; whilein ii*3; A. On B. O3n C. Olog3n D. On3 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。 A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是( A )。 is0; whilesn i++;s+i; A. On B. On2 C. Olog2n D. On3 11、抽象数据类型的三个组成部分分别为( A )。 A. 数据对象、数据关系和基本操作 B. 数据元素、逻辑结构和存储结构 C. 数据项、数据元素和数据类型 D. 数据元素、数据结构和数据类型 12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(D)。

北京交通大学数据结构与算法期末测验考试参考答案

北京交通大学考试试题(A卷) 课程名称:数据结构与算法2011-2012学年第一学期出题教师:张勇 (请考生注意:(1)本试卷共有六道大题,(2)答案一律写在答题纸上,(3)试卷不得带出考场) 1. 在顺序表中访问任意一个元素的时间复杂度均为,因此顺序表也称为 的数据结构。 2.三维数组a[4][3][2](下标从0开始),假设a[0][0][0]的地址为50,数据以行序优先方式存储,每个元素的长度为2字节,则a[2][1][1]的地址是。 3. 直接插入排序用监视哨的作用是。 4. 已知广义表Ls=(a, (b, c), (d, e)), 运用head和tail函数取出Ls中的原子d的运算 是。 5.对有14个元素的有序表A[1..14]进行折半查找,当比较到A[4]时算法结束。被比较元素除A[4]外,还有。 6. 在AOV网中,顶点表示,边表示。 7. 有向图G可进行拓扑排序的判别条件是。 8. 若串S1=‘ABCDEFGHIJK’,S2=‘451223’,S3=‘####’,则执行 Substring(S1,Strlength(S3),Index(S2,‘12’,1))的结果是。 二、选择题(每空2分,共20分) 1.在下列存储形式中,哪一个不是树的存储形式?() A.双亲表示法B.孩子链表表示法 C.孩子兄弟表示法D.顺序存储表示法 2.查找n个元素的有序表时,最有效的查找方法是()。 A.顺序查找B.分块查找 C.折半查找D.二叉查找 3.将所示的s所指结点加到p所指结点之后,其语句应为()。 p (A) s->next=p+1 ; p->next=s;

(B) (*p).next=s; (*s).next=(*p).next; (C) s->next=p->next ; p->next=s->next; (D) s->next=p->next ; p->next=s; 4. 在有向图的邻接表存储结构中,顶点v 在链表中出现的次数是( )。 A. 顶点v 的度 B. 顶点v 的出度 C. 顶点v 的入度 D. 依附于顶点v 的边数 5. 算法的时间复杂度为O (nlog 2n )、空间复杂度为O(1)的排序算法是( )。 A. 堆排序 B. 快速排序 C. 归并排序 D.直接选择 6. 设矩阵A 是一个对称矩阵,为了节省存储,将其 下三角部分(如右图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素ai,j(i ≤j), 在一维数组B 中下标k 的值是( ): A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j 7. 由一个长度为11的有序表,按二分查找法对该表进行查找,在表内各元素等概率情 况下,查找成功的平均查找长度是( )。 A .29/11 B. 31/11 C. 33/11 D.35/11 8. AVL 树是一种平衡的二叉排序树,树中任一结点的( )。 A. 左、右子树的高度均相同 B. 左、右子树高度差的绝对值不超过1 C. 左子树的高度均大于右子树的高度 D. 左子树的高度均小于右子树的高度 9. 下列四种排序方法中,不稳定的方法是( )。 A. 直接插入排序 B. 冒泡排序 C. 归并排序 D. 堆排序 10. 设树的度为4,其中度为1,2,3,4的结点个数分别为4, 2, ,1, 1, 则T 中的叶子数为 ( )。 A .5 B .6 C .7 D .8 三、 判断题(10分,每小题1分) 1. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( ) 2. 数组不适合作任何二叉树的存储结构。( ) 3. 广义表的取表尾运算,其结果通常是个表,但有时也可是个原子。( ) 4. 在含有n 个结点的树中,边数只能是n-1条。( ) 5. 所谓一个排序算法是否稳定,是指该算法在各种情况下的效率是否相差不大。( ) 6. 简单选择排序在最好情况下的时间复杂度为O(n)。( ) 7. 在二叉排序树中插入一个新结点,总是插入到叶结点下面。( ) 8. 采用线性探测处理冲突,当从哈希表中删除一个记录时,不应将该记录所在位置置 空,因为这会影响以后的查找。( ) 9. 有n 个数存放在一维数组A[1..n]中,在进行顺序查找时,这n 个数的排列有序或无 ?????? ? ???? ? ??=n n n n a a a a a a A ,2,1,2 ,21,21 ,1Λ Λ

数据结构算法面试100题

数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14 / / / / 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode { int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node }; 2.设计包含min函数的栈(栈) 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 要求函数min、push以及pop的时间复杂度都是O(1)。 参见C:\Users\Administrator\Desktop\demo\Stack 分析:min时间复杂度要达到O(1),需要我们在栈中存储最小元素 3.求子数组的最大和(数组) 题目: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 分析:根据dp思想 #include #define N 8 int main() { int i, a[N] = {1, -2, 3, 10, -4, 7, 2, -5}; int from[N], result[N], max;

单片机程序分析试题与答案

六、设计题 1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。 答:图(5分) 构思(3分) MOV A,#80H (1分) UP:MOV P1,A (1分) RR A (2分) SJMP UP (1分) 2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。 答:图(5分) 构思(3分) 程序(4分) ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 ORG 0013H LJMP BINT1 MAIN: MOV IE,#83H SETB IT0 SETB IT1 MOV R0,#00H MOV DPTR,#TAB UP: MOV A,R0 MOVC A,@A+DPTR MOV P1,A SJMP UP AINT0: INC R0 CJNE R0,#10,AINT01 MOV R0,#0 AINT01: RETI BINT1: DEC R0 CJNE R0,#0FFH,BINT11 MOV R0,#9 BINT11: RETI 1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 1.SQR:1NC A MOVC A,@A+PC RET TAB:DB 0,1,4,9,16 DB 25,36,49,64,81 2.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨C Y) 2.ORL C,11H

MOV 12H,C MOV C,P1.0 ORL C,/10H ANL C,12H MOV BIT,C RET 3.已知变量X存于V AR单元,函数值Y存于FUNC单元,按下式编程求Y值。 Y= 10 0 1 x x x > - = 0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RES POSI:MOV A,#01H RES:MOV FUNC,A RET 4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的 单元中(低位在前)。 4. MOV R0,#SUM MOV A,R2 ANL A,#OFH MOV @R0,A ;存低字节BCD MOV A,R2 ANL A,#0F0H SW AP A 1NC R0 MOV @R0,A ;存高字节BCD RET 5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 5. MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H LOOP:MOVX A,@DPTR ;取数 MOVX @R0,A ;存数 1NC DPTR 1NC R0 DJNZ R2,LOOP RE T

数据结构与算法复习题10(C语言版)

习 9解答 判断题: 1.用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。 答:FALSE (错。链表表示的有序表不能用折半查找法。) 2.有n 个数据放在一维数组A[1..n]中,在进行顺序查找时,这n 个数的排列有序或无序其平均查找长度不同。 答:FALSE (错。因顺序查找既适合于有序表也适合于无序表;对这两种表,若对于每个元素的查找概率相等,则顺序查找的ASL 相同,并且都是(n+1)/2;对于查找概率不同的情况,则按查找概率由大到小排序的无序表其ASL 要比有序表的ASL 小。) 3.折半查找是先确定待查有序表记录的范围,然后逐步缩小范围,直到找到或找不到该记录为止。( ) 答:TRUE 4.哈希表的查找效率主要取决于哈希表哈希表造表时选取的哈希函数和处理冲突的方法。 答:TRUE 5.查找表是由同一类型的数据元素(或记录)构成的集合。 答:TRUE 单选题: 6.对于18个元素的有序表采用二分(折半)查找,则查找A[3]的比较序列的下标为( )。 A. 1、2、3 B. 9、5、2、3 C. 9、5、3 D.9、4、2、3 答:D (第一次??2/)181(+ = 9,第二次??2/)81(+ = 4,第三次??2/)31(+ = 2, (第四次??2/)33(+ = 3,故选D. 7. 顺序查找法适合于存储结构为____________的线性表。 A.散列存储 B.顺序存储或链式存储 C.压缩存储 D.索引存储 答:B 8.对线性表进行二分查找时,要求线性表必须( )。 A .以顺序方式存储 B. 以链接方式存储 C .以顺序方式存储,且结点按关键字有序排序 D. 以链接方式存储,且结点按关键字有序排序 答:C 9.设哈希表长m=14,哈希函数为H(k) = k MOD 11。表中已有4个记录(如下图

典型数据结构面试题

数据结构 1?在一个单链表中p所指结点之前插入一个s (值为e)所指结点时,可执行如下操作: q=head; while (q->next!=p)q=q->next; s= newNode;s->data=e; q->next=;// 填空 s->next=;// 填空 2.线性表的顺序存储结构是一种的存储结构,而链式存储结构是一种___的 存储结构。 A.随机存取 B.索引存取 C.顺序存取 D.散列存取 3.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。 A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续或不连续都可以 4?在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p 之间插入s结点,则执行_。 A.s->next=p->next;p->next=s; B.p->next=s->next;s->next=p;

C.q->next=s;s->next=p; D.p->next=s;s->next=q; 5.在一个单链表中,若p 所指结点不是最后结点,在p 之后插入s 所指结点,则执行__。 A.s->next=p;p->next=s; B.s->next=p->next;p->next=s; C.s->next=p->next;p=s; C. p->next=s;s->next=p; 6.在一个单链表中,若删除p 所指结点的后续结点,则执行__。 A.p->next= p->next->next; B.p= p->next;p->next= p->next->nex;t C.p->next= p->next; D.p= p->next->next; 7.链表不具备的特点是__。 A 可随机访问任何一个元素 B 插入、删除操作不需要移动元素 C无需事先估计存储空间大小D所需存储空间与线性表长度成正比 8.以下关于线性表的说法不正确的是。 A 线性表中的数据元素可以是数字、字符、记录等不同类型。 B 线性表中包含的数据元素个数不是任意的。 C 线性表中的每个结点都有且只有一个直接前趋和直接后继。 D 存在这样的线性表:表中各结点都没有直接前趋和直接后继。 9?在一个长度为n的顺序表中删除第i个元素,要移动个元素。如果要在第 i 个元素前插入一个元素,要后移()个元素。N-I N-I+1

软件测试试题及答案分析

单选 1. 属于黑盒测试的方法?( C) A.基于基本路径 B.控制流 C.基于用户需求测试 D.逻辑覆盖 2.在Assert类中断言对象为NULL是_____。(D) A.assertEquals B.assertTrue C.fail D.assertNull 3.___________的目的是对最终软件系统进行全面的测试确保最终软件系统产品满足需求(A) A.系统测试B.集成测试 C.单元测试D.功能测试 4.有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准___________。(B) A. 语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖 5.软件测试的目的是___________。(C) A.表明软件的正确性B.评价软件质量 C.尽可能发现软件中的错误D.判定软件是否合格 6.关于白盒测试与黑盒测试的最主要区别,正确的是___________。(A) A.白盒测试侧重于程序结构,黑盒测试侧重于功能 B.白盒测试可以使用测试工具,黑盒测试不能使用工具 C.白盒测试需要程序参与,黑盒测试不需要 D.黑盒测试比白盒测试应用更广泛 7.软件测试类型按开发阶段划分___________。(B) A.需要测试﹑单元测试﹑集成测试 B.单元测试﹑集成测试﹑确认测试﹑系统测试﹑验收测试 C.单元测试﹑集成测试﹑确认测试 D.调试﹑单元测试﹑功能测试 8.在Junit中,testXXX()方法就是一个测试用例,测试方法是______。(B) A.private void testXXX() B.public void testXXX() C.public float testXXX() D.public int testXXX() 9.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?(A)A.单元测试B.集成测试 C.目的测试D.确认测试 10.增量式集成测试有3种方式:自顶向下增量测试方法,和混合增量测试方式。(D ) A.自中向下增量测试方法B.多次性测试 C.维护D.自底向上增量测试方法 1)以下不属于软件测试的原则有(D )。 A.程序最好别让由编写该程序的程序员自己来测试

《Python程序设计基础》习题答案与分析

Python程序设计基础习题答案与分析 程昱

第1章基础知识 1.1 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。 1.2 为什么说Python采用的是基于值的内存管理模式? Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) 10417624 >>> y = 3 >>> id(y) 10417624 >>> y = 5 >>> id(y) 10417600 >>> id(x) 10417624 >>> x = [1, 2, 3, 1, 1, 2] >>> id(x[0])==id(x[3])==id(x[4]) True 1.3 解释Python中的运算符“/”和“//”的区别。 答: 在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。

数据结构与算法分析习题与参考答案

大学 《数据结构与算法分析》课程 习题及参考答案 模拟试卷一 一、单选题(每题 2 分,共20分) 1.以下数据结构中哪一个是线性结构?( ) A. 有向图 B. 队列 C. 线索二叉树 D. B树 2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点, 则执行如下( )语句序列。 A. p=q; p->next=q; B. p->next=q; q->next=p; C. p->next=q->next; p=q; D. q->next=p->next; p->next=q; 3.以下哪一个不是队列的基本运算?() A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值 4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( ) 个不同的字符串? A.14 B.5 C.6 D.8 5.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。 以下6-8题基于图1。 6.该二叉树结点的前序遍历的序列为( )。 A.E、G、F、A、C、D、B B.E、A、G、C、F、B、D C.E、A、C、B、D、G、F D.E、G、A、C、D、F、B 7.该二叉树结点的中序遍历的序列为( )。 A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F E.B、D、C、A、F、G、E 8.该二叉树的按层遍历的序列为( )。

A.E、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B 9.下面关于图的存储的叙述中正确的是( )。 A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关 D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建 堆的结果?( ) A. a,g,h,m,n,p,q,x,z B. a,g,m,h,q,n,p,x,z C. g,m,q,a,n,p,x,h,z D. h,g,m,p,a,n,q,x,z 二、填空题(每空1分,共26分) 1.数据的物理结构被分为_________、________、__________和___________四种。 2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_________, 在表尾插入元素的时间复杂度为____________。 3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是________________; 删除一个结点时,需要执行的操作是______________________________(假设栈不空而 且无需回收被删除结点)。 4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1≤i≤n),若它有左孩子则左 孩子结点的编号为________,若它有右孩子,则右孩子结点的编号为________,若它有 双亲,则双亲结点的编号为________。 5.当向一个大根堆插入一个具有最大值的元素时,需要逐层_________调整,直到被调整 到____________位置为止。 6.以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为________。 7.表示图的三种常用的存储结构为_____________、____________和_______________。 8.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K %7 作为散列函数,则散列地址为0的元素有________个,散列地址为6的有_______个。 9.在归并排序中,进行每趟归并的时间复杂度为______,整个排序过程的时间复杂度为 ____________,空间复杂度为___________。 10.在一棵m阶B_树上,每个非树根结点的关键字数目最少为________个,最多为________ 个,其子树数目最少为________,最多为________。 三、运算题(每题 6 分,共24分) 1.写出下列中缀表达式的后缀形式: (1)3X/(Y-2)+1 (2)2+X*(Y+3) 2.试对图2中的二叉树画出其: (1)顺序存储表示的示意图; (2)二叉链表存储表示的示意图。 3.判断以下序列是否是小根堆? 如果不是, 将它调 图2 整为小根堆。 (1){ 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 } (2){ 05, 23, 20, 28, 40, 38, 29, 61, 35, 76, 47, 100 } 4.已知一个图的顶点集V和边集E分别为: V={1,2,3,4,5,6,7};

相关主题
相关文档 最新文档