2023年4月自考02331数据结构试题及答案含解析_第1页
2023年4月自考02331数据结构试题及答案含解析_第2页
2023年4月自考02331数据结构试题及答案含解析_第3页
2023年4月自考02331数据结构试题及答案含解析_第4页
2023年4月自考02331数据结构试题及答案含解析_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构年月真题

0233120234

1、【单选题】算法的空间复杂度表示的是

算法的可读性

算法的难易程度

A:

执行算法所耗费的时间

B:

执行算法所耗费的存储空间

C:

答D:案:D

解析:那么,又如何来评价这些算法的优劣,进而从中选择好的算法呢?显然,算法的

“正硒性”是首先要考虑的。所谓一个算法的正确性,是指对于一切合法的输入数据,该

算法经过有限时间的执行都能得到正确的结果。此外,应主要考虑如下几点:(1)执行

算法所耗费的时间,即时间复杂性。(2)执行算法所耗费的存储空间,主要是辅助空

间,即空间复杂性。(3)算法应易于理解、易于编程,易于调试等,即可读性和可操作

性。P37

2、【单选题】对需要频繁插入和删除元素的线性表,适合的存储方式是

顺序存储

链式存储

A:

索引存储

B:

散列存储

C:

答D:案:B

解析:链式存储是对于需要频繁插入和删除元素的线性表来说比较适合的存储方式。链式

存储使用指针将元素按照顺序连接起来,每个元素包含一个指向下一个元素的指针,这样

在插入和删除元素时只需要改变指针的指向,而不需要移动其他元素。相比之下,顺序存

储需要移动元素来腾出空间或填补空缺,效率较低。因此,对于需要频繁插入和删除元素

的线性表,链式存储方式更加高效。

3、【单选题】线性表的两个元素,如果逻辑上相邻,则

顺序存储和链式存储时都一定相邻

顺序存储和链式存储时都一定不相邻

A:

顺序存储时一定相邻,链式存储时不一定相邻

B:

顺序存储时不一定相邻,链式存储时一定相邻

C:

答D:案:C

解析:对于顺序存储方式,线性表中逻辑上相邻的两个元素在物理存储上也是相邻的,即

它们在内存中是连续存储的。这是因为顺序存储方式将线性表的元素按照顺序依次存放在

一块连续的内存空间中。而对于链式存储方式,线性表中逻辑上相邻的两个元素在物理存

储上不一定相邻,它们可以在内存中的任意位置。链式存储方式使用指针将元素连接起

来,每个元素包含一个指向下一个元素的指针,因此元素的物理存储位置可以是离散的。

因此,顺序存储方式适合于需要频繁访问元素的场景,而链式存储方式适合于需要频繁插

入和删除元素的场景。

4、【单选题】在头指针为head的单链表中,判断指针变量p指向终端结点的条件是

p->next->next==head

p->next==head

A:

p->next->next==NULL

B:

p->next==NULL

C:

答D:案:D

5、【单选题】若栈的进栈序列为5,4,3,2,1,则经过出入栈操作可能获得的出栈序列是

4,5,1,3,2

3,5,4,2,1

A:

2,1,3,5,4

B:

4,3,5,1,2

C:

答D:案:D

6、【单选题】在三维数组a[7][4][10]中,每个数组元素占用2个存储单元,所有数组元素

存放在一个连续的存储空间中,则该数组需要的存储单元总数是

560

280

A:

42

B:

21

C:

答D:案:A

7、【单选题】下列广义表中,表长为3的是

((a,b,c))

(a,(b,c),(d,e,f))

A:

(a,b,c,(d,e,f)

B:

(a,(b,c,d,e,f)

C:

答D:案:B

8、【单选题】深度为k(k≥1)的满二叉树所包含的结点数是

k+1

2k

A:

2k-1

B:

2k+1

C:

答D:案:C

9、【单选题】下列选项中,能唯一确定一棵二叉树的两个遍历序列是

前序遍历序列和层次遍历序列

后序遍历序列和层次遍历序列

A:

前序遍历序列和中序遍历序列

B:

前序遍历序列和后序遍历序列

C:

答D:案:C

10、【单选题】下列关于连通的无向带权图G的叙述中,正确的是

图G的生成树至少含有一个回路

图G的最小生成树总是唯一的

A:

图G的邻接矩阵不一定是对称矩阵

B:

图G的生成树的边数等于顶点数减1

C:

答D:案:D

11、【单选题】下列排序方法中,不稳定的是

堆排序

冒泡排序

A:

归并排序

B:

直接插入排序

C:

答D:案:A

12、【单选题】对图进行拓扑排序,可以得到的拓扑序列是

BADCEB

BACDEA

A:

ACBDED>E

B:

ABDCE

C:

答D:案:D

13、【单选题】下列选项中,能使用二分查找算法的是

顺序存储的线性表(4,16,5,6,55,89,34,25)

顺序存储的线性表(4,5,6,16,25,34,55,89)

A:

散列存储的线性表(4,5,6,16,25,34,55,89)

B:

链式存储的线性表(4,5,6,16,25,34,55,89)

C:

答D:案:B

14、【单选题】在下列查找算法中,平均查找长度与数据规模基本无关的是

顺序查找

散列查找

A:

二分查找

B:

B树中的查找

C:

答D:案:B

15、【单选题】假设散列表长m=10,散列函数H(key)=key%9。表中已有3个结点:

H(23)=5,H(31)=4,H(17)=8,其余位置为空。现采用线性探查法处理冲突,依次存储关键字4

和36时需要探查的次数分别是

1和1

2和1

A:

3和1

B:

1和3

C:

答D:案:C

16、【问答题】设循环队列保存在数组Q[N]中,front和rear分别为队头和队尾指针,初

始时front=rear=0,约定指针rear指向的单元始终为空,请用C语言分别描述下列操作:(1)

将数据元素x入队。(2)将队首元素出队,并保存到变量myData中。(3)计算队列中当前数据

元素的个数,并保存到变量DLenth中。

答案:(1)数据元素X入队:if((rear+1)%N==front)printf("Queueoverflow")

else{Q[rear]=x;rear=(rear+1)%N;}(2)队首元素出队并保存到变量myData.中:

if(rear==front)printf(“Queueempty”)else{myData=Q[front];

front=(front+1)%N;}(3)当前队列长度DLenth=(N+rear-front)%N(或

DLenth=(rear>=front)?rear-front:N+rear-front)

17、【问答题】已知稀疏矩阵M如下,采用三元组表存储。

(1)请给出三元组表的类型定义。

(2)写出矩阵M按列优先存储的三元组表。

答案:

18、【问答题】已知待排序记录的关键字序列为(45,37,75,18,53,31,48,37),请回答下列

问题。(1)画出其对应的完全二叉树T。(2)将T调整为对应的大根堆,给出大根堆序列。

答案:

19、【问答题】将百分制成绩分成五个等级,已知成绩的对应关系及分布情况如下表所

示。请回答下列问题。

(1)根据哈夫曼树的基本原理,画出成绩评定判定树T。

(2)求树T的WPL。

答案:

20、【问答题】单链表类型定义如下:typedefstructnode{DataTypedata;struct

node*next;}LinkNode;typedefLinkNode*Linklist;函数f30的功能是删除带头结

点的单链表中data值为x的全部结点,请在空白处填上适当内容将算法补充完整。void

f30(Linklisthead,DataTypex){LinkNode*p,*q,*s;p=head;q=(1);

while(q!=NULL)if((2)){s=q;q=q->next;p->next=q;free(s);}else{p=q;

q=(3);}}

答案:(1)p->next(2)q->data==x(3)q->next

21、【问答题】二叉树的二叉链表类型定义如下:

#definecharDataType

typedefstructnode{

DataTypedata;

structnode*lchild,*rchild;

}BinTNode;

typedefBinTNode*BinTree;

阅读下列函数并回答问题。

voidf31(BinTreebt){

if(bt!=NULL){

f31(bt->rchild);

f31(bt->lchild);

printf("%c",bt->data);

}

}

(1)给出如图所示的二叉树T,写出执行函数f31(T)后得到的输出序列。

(2)对于二叉树中的任意结点N及它的左子树L和它的右子树R,f31的遍历次序是什么?

答案:(1)FDECBA(2)RLN次序(或先序遍历的逆)

22、【问答题】阅读下列函数并回答问题。voidf32(intr[],intN){inti,j,temp;

for(i=1;i{temp=r[i];j=i-1;while(temp{r[j+1]=r[j];j=j-1;}

r[j+1]=temp;}}(1)若t[8]=(3,12,5,78,6,9,4,35),写出执行函数f32(t,8)后数组t

中的各元素。(2)函数f32的功能是什么?

答案:(1)3,4,5,6,9,12,35,78(2)直接插入排序

23、【问答题】函数f33实现二分查找,请回答下列问题。(1)在空白处补充适当内容,

使函数功能完整。(2)如果待查序列R为(4,5,6,16,25,34,55,89),分别给出执行

f33(R,9,8)和f33(R,34,8)的返回值。intf33(SeqListR[],KeyTypek,intn){int

low=0,mid,high=n-1;while(low<=high){mid=(low+high)/2;if(R[mid].key==k)

returnmid;if((1))high=mid-1elselow=mid+1;}return-1;}

答案:(1)R[mid].key>k(2)-1和5

24、【问答题】二叉树的二叉链表类型定义如下:typedefstructnode{intdata;

structnode*lchild,*rchild;}BinNode;typedefBinNode*BinTree;编写函数

f34(BinTreeBt),返回二叉树Bt中数据元素的最大值。函数的原型为:intf34(BinTree

Bt)。

答案:#defineMin-65525intf34(BinTreeBT){intlvalue,rvalue,maxvalue;

if(BT==NULL)returnMin;if(BT!=NULL){lvalue=f34(BT->lchild);

rvalue=f34(BT->rchild);maxvalue=(lvalue>rvalue)?lvalue:rvalue;

maxvalue=(maxvalue>BT->data)?maxvalue:BT->data;returnmaxvalue;}

25、【填空题】顺序存储和链接存储方法中,无需连续分配存储空间的是()。

答案:链接存储

26、【填空题】设顺序表首元素的存储地址是4000,每个数据元素占

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论