数据结构复习+答案

news2024/12/24 2:27:59

一、选择题:(每小题2分,共30分)

1、在数据的逻辑结构中,树结构和图结构都是( )
A.非线性结构 B.线性结构
C.动态结构 D.静态结构
2.在一个长度为n的顺序表中插入一个元素的算法的时间复杂度为( )
A.O(1) B.O(log n)
C.O(n) D.O(n2)
3.指针p1和p2分别指向两个无头结点的非空单循环链表中的尾结点,要将两个链表链接成一个新的单循环链表,应执行的操作为( )
A.p1->next=p2->next;p2->next=p1->next;
B. p2->next=p1->next;p1->next=p2->next;
C. p=p2->next; p1->next=p;p2->next=p1->next;
D. p=p1->next; p1->next= p2->next;p2->next=p;
4.设栈的初始状态为空,入栈序列为1,2,3,4,5,6,若出栈序列为2,4,3,6,5,1,则操作过程中栈中元素个数最多时为( )
A.2个 B.3个
C.4个 D.6个
5.队列的特点是( )
A.允许在表的任何位置进行插入和删除
B.只允许在表的一端进行插入和删除
C.允许在表的两端进行插入和删除
D.只允许在表的一端进行插入,在另一端进行删除
6.一个链串的结点类型定义为
﹟define NodeSize 6
typedef struct node{
char data[NodeSize];
struct node*next;
}LinkStrNode;
如果每个字符占1个字节,指针占2个字节,该链串的存储密度为( )
A.1/3 B.1/2
C.2/3 D.3/4
7.广义表A=(a,B,(a,B,(a,B,……)))的长度为( )
A.1 B.2
C.3 D.无限值
8.已知10×12的二维数组A,按“行优先顺序”存储,每个元素占1个存储单元,已知A[1][1]的存储地址为420,则A[5][5]的存储地址为( )
A.470 B.471
C.472 D.473
9.在一棵二叉树中,度为2的结点数为15,度为1的结点数为3,则叶子结点数为( )
A.12 B.16
C.18 D.20
10.在带权图的最短路径问题中,路径长度是指( )
A.路径上的顶点数 B.路径上的边数
C.路径上的顶点数与边数之和 D.路径上各边的权值之和
11.具有n个顶点、e条边的无向图的邻接矩阵中,零元素的个数为( )
A.e B.2e
C.n2-2e D.n2-1
12.要以O(n log n)时间复杂度进行稳定的排序,可用的排序方法是( )
A.归并排序 B.快速排序
C.堆排序 D.冒泡排序
13.若希望在1000个无序元素中尽快求得前10个最大元素,应借用( )
A.堆排序 B.快速排序
C.冒泡排序 D.归并排序
14.对有序表进行二分查找成功时,元素比较的次数( )
A.仅与表中元素的值有关 B.仅与表的长度和被查元素的位置有关
C.仅与被查元素的值有关 D.仅与表中元素按升序或降序排列有关
15.散列文件是一种( )
A.顺序存取的文件 B.随机存取的文件
C.索引存取的文件 D.索引顺序存取的文件

二、填空题:(每空2分,共20分)

16.数据结构由数据的逻辑结构、存储结构和数据的____________三部分组成。
17.在单链表中某结点后插入一个新结点,需要修改_______________个结点指针域的值。
18.设栈S的初始状态为空,若元素a、b、c、d、e、f依次进栈,得到的出栈序列是b、d、c、f、e、a,则栈S的容量至少是________________。
19.长度为零的串称为________________。
20.广义表G=(a,b,(c,d,(e,f)),G)的长度为________________。
21.一棵树T采用孩子兄弟链表存储,如果树T中某个结点为叶子结点,则该结点在二叉链表中所对应的结点一定是________________。
22.一个有n个顶点的无向连通图,最少有________________条边。
23.当待排关键字序列基本有序时,快速排序、简单选择排序和直接插入排序三种排序方法中,运行效率最高的是____ _
24.在一棵深度为h的具有n个结点的二叉排序树中,查找任一结点的最多比较次数是
_______
25.不定长文件指的是文件的
________大小不固定。
三、解答题(本大题共4小题,每小题5分,共20分)
26.已知一棵二叉排序树(结点值大小按字母顺序)的前序遍历序列为EBACDFHG,请回答下列问题:
(1)画出此二叉排序树;
(2)若将此二叉排序树看作森林的二叉链表存储,请画出对应的森林。

27.已知有向图的邻接表如图所示,请回答下面问题:

(1)给出该图的邻接矩阵;
(2)从结点A出发,写出该图的深度优先遍历序列。

28.已知待排记录的关键字序列为{25,96,11,63,57,78,44},请回答下列问题:
(1)画出堆排序的初始堆(大根堆);
(2)画出第二次重建堆之后的堆。

29.已知关键字序列为(56,23,41,79,38,62,18),用散列函数H(key)=key%11将其散列到散列表HT[0…10]中,采用线性探测法处理冲突。请回答下列问题:
(1)画出散列存储后的散列表:
(2)求在等概率情况下查找成功的平均查找长度。

四、算法阅读题(本大题共4小题,每小题5分,共20分)
30.阅读下列算法,并回答问题:
(1)假设L=(3,7,7,11,20,20,20,51,51),写出执行函数f30(&L)后的L;
(2)简述f30的功能。
void f30(SeqList*L)
{ ∥L为非空的有序表
int i=1,k=0;
while(i<L->length)

if(L->data[i]!=L->data[k])
L->data[++k]=L->data[i];
i++;
}
L->length=k+1;
}
(1)
(2)

31.阅读下列算法,并回答问题:
(1)假设栈S=(3,8,6,2,5),其中5为栈顶元素,写出执行函数f31(&S)后的S;
(2)简述函数f31的功能。

void f31(Stack *S){
Queue Q;InitQueue(&Q);
while(!StackEmpty(S))
EnQueue(&Q,Pop(&S));
while(!QueueEmpty(Q))
Push(&S,DeQueue(&Q));
}
(1)
(2)

32.假设具有n个结点的完全二叉树顺序存储在向量BT[1… n]中,阅读下列算法,并回答问题:
(1)若向量BT为:
A B C D E F G
1 2 3 4 5 6 7
画出执行函数f32(BT,7,1)的返回结果;
(2)简述函数f32的功能。
BinTree f32(DataType BT[],int n,int i)
{
BinTree p;
if (i>n) return NULL;
p=(BinTNode*)malloc(sizeof(BinTNode));
p->data=BT[i];
p->lchild=f32(BT,n,i2);
p->rchild=f32(BT,n,i
2+1);
return p;
}
(1)
(2)

33.已知有向图的邻接表和邻接矩阵定义如下:
﹟define MaxNum 50 ∥图的最大顶点数
typedef struct node {
int adjvex; ∥邻接点域
struct node *next; ∥链指针域
} EdgeNode; ∥边表结点结构
typedef struct{
char vertex; ∥顶点域
EdgeNode *firstedge; ∥边表头指针
} VertexNode; ∥顶点表结点结构
typedef struct {
VertexNode adjlist [MaxNum]; ∥邻接表
int n,e; ∥图中当前顶点数和边数
} ALGraph; ∥邻接表描述的图
typedef struct{
char vertex[MaxNum]; ∥顶点表
int adjmatrix [MaxNum][MaxNum]; ∥邻接矩阵
int n,e; ∥图中当前顶点数和边数
} AMGraph; ∥邻接矩阵描述的图
下列算法是将邻接表描述的图G1改为邻接矩阵描述的图G2,在空白处填上适当内容使算法完整:
void f33(ALGraph G1,AMGraph *G2)
{ int i, j;
EdgeNode *p;
G2->n=G1.n;
G2->e= (1) ;
for (i=0; i<G1.n; i++)
{ G2->vertex[i]= (2) ;
p=G1.adjlist[i].firstedge;
for (j=0; j<G1.n; j++) G2->adjmatrix[i][j]=0;
while §
{ G2->adjmatrix[i][p->adjvex]=1;
(3) ;
}
}
}
(1)
(2)
(3)

五、算法设计题(本题10分)
34.设顺序表L是一个递增有序表。编写算法,要求利用二分查找法确定插入位置,将元素x插入到L中,使L保持有序。

**

答案:

**

一、单选
1-5:ACDBD 6-10: DCCBD 11-15: CAABB

二、填空题:(每空2 分,共20分)
运算、2、3、空串、4、左子树为空、n-1、直接插入排序、h、记录
三、解答题(本大题共4小题,每小题5分,共20分)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThinkPHP文件包含漏洞分析

出品|长白山攻防实验室(ID:A_Tree) 0x00 声明 以下内容,来自长白山攻防实验室的A_Tree作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室…

全宇宙最强AI 聊天机器人模型ChatGPT惊艳来袭,你还不上车?居然能写演讲稿和帮忙写代码

目录1、ChatGPT介绍2、ChatGPT如何注册,国内不可用3、VS Code下载安装ChatGPT3.1 打开VS Code找到ChatGPT3.2 ChatGPT 详细安装步骤:3.3 用法3.4 国外模式’ 此模式下,速度会比较稳定,如果有条件,建议使用本模式。 理论…

大数据HDFS凭啥能存下百亿数据?

前言 大家平时经常用的百度网盘存放电影、照片、文档等,那有想过百度网盘是如何存下那么多文件的呢?难到是用一台计算机器存的吗?那得多大磁盘啊?显然不是的,那本文就带大家揭秘。 分布式存储思想 既然一台机器的存储…

Spring 核心与设计思想 · Spring IoC容器 · 控制反转式程序开发 · DI概念

Spring 是什么?一、什么是容器?二、什么是 IoC?2.1 传统程序开发2.2 控制反转式程序开发2.3 对比总结规律三、理解 Spring IoC四、DI 概念说明Spring 是什么? 我们通常说的 Spring 是指 Spring Framework(Spring 框架…

【Mysql】知识体系结构构建以及常见考题汇总

【Mysql】知识体系结构构建以及常见考题汇总1、基本SQL知识1.1、D_L语法以及表中常用约束1.2、mysql表列常用数据结构1.3、事务(此处展示并发事务问题以及解决方案、实现原理见2.3)read uncommitted有脏读问题read committed解决脏读、有不可重复读问题r…

Android基础学习(二十)—— 线程安全

1、Android中线程的常见用法 (1)继承 Thread class MyThread extends Thread{Overridepublic void run(){//处理具体的逻辑} } new MyThread().start(); //启动此线程//使用匿名类 new Thread(){Overridepublic void run(){//处理具体的逻辑} }.star…

【加油站会员管理小程序】03 创建应用

我们上一篇介绍了数据源的创建,本篇我们介绍应用的创建。 微搭低代码中一共有两类应用,一类是数据模型应用,一类是自定义应用。数据模型应用往往对应着PC端的管理后台,例如我们的小程序通常需要一个管理后台来录入数据。 自定义…

【linux】2022年还能用,网易真的是良心啊,网易云音乐linux版本现在还是可以使用的超赞!!官方网的下载地址还可以使用,音乐使用的是qt5进行开发的。

目录前言1,关于网易云音乐2,可以正常使用,可以登录前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/128261513 未经博主允许不得转载。 博主CSDN地址是:https://blog.csdn.net/freewebsys 博主掘金地址…

vue.js:父子组件的实训案例

作业需求 需求1:定义两个输入框,通过输入框输输入的值改变页面显示的值需求2:改变第一个输入框的值的同时使得第二个输入框的值变为100倍并显示需求3:改变第二个输入框的值的同时使得第一个输入框的值变为1/100并显示 实训代码实…

CentOS搭建基于ZIPKIN的数据追踪系统

ZipKin入门介绍 Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。分布式跟踪系统还有其…

TinUI4.0发布

引言 TinUI4登场~~~ 更新一览: 优化radiobox效果修复listview返回元素不全的问题新增树状图 treeview使用TinUI LOGO.ico新增普通图片 image随包发布 TinUI帮助手册 实用程序,在\test目录下 修复 这是常规更新,修复了listview创建过程中…

ChatGPT怎么用

最开始了解ChatGPT居然是抖音上看到的,之前了解过GPT-3,最开始认为可能类似的语言模型,上手以后才发现,这玩意挺有意思,某些方面,比百度强,但是比人还差十万八千里,智力不好说&#…

【Proteus仿真】【STM32单片机】智能浴室水温调控仪设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602、DS18B20、继电器加热、电机模块等。 系统运行后,LCD1602显示DS18B20采集温度值、温度上限阈值。 开启加水,一段…

PostgreSQL实战之物理复制和逻辑复制(四)

目录 PostgreSQL实战之物理复制和逻辑复制(四) 4 流复制监控 4.1 pg_stat_replication 4.2 监控主备延迟 4.3 pg_stat_wal_receiver PostgreSQL实战之物理复制和逻辑复制(四) 4 流复制监控 4.1 pg_stat_replication 主库上主…

Dual-Path Fusion:遥感融合

DPFN: A Dual-Path Fusion Network for Pan-Sharpening (一种用于泛锐化的双路径融合网络) 大多数现有深上用于pan-sharpening方法的几个公认的问题,如光谱失真和足够的空间纹理增强。针对这些问题,提出了一种新的双路径融合网络…

浙大全日制英文MBA项目申请的五大关键词

2023级开始,浙大全日制英文MBA项目全面登场!对于这个项目的了解,大多数考生还不是特别清楚,因为很多考生更加关注的是“全日制”而非英文MBA本身的情况,如果还是带着以往对中文全日制MBA项目的理解来申请这个项目&…

《Linux运维实战:使用Percona Server for MongoDB物理备份与恢复Mongodb数据》

一、备份与恢复方案 Percona Server for MongoDB 是一个免费的、增强的、完全兼容的、源代码可用的、带有企业级功能的MongoDB Community Edition的替代品。它不需要对MongoDB应用程序或代码进行更改。Percona Server for MongoDB支持版本 > 3.6 。 说明:当前环…

【通知】《生成对抗网络GAN原理与实践》代码开源,勘误汇总!

有三上个月出版了新书《生成对抗网络GAN:原理与实践》,Generative Adversarial Networks(中文名生成对抗网络,简称GAN)自从被提出来后,其发展就非常迅猛,几乎已经被应用于所有CNN可以使用的领域…

Js逆向教程21-vscode无环境联调

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 Js逆向教程21-vscode无环境联调 一、环境安装 电脑安装visual code 电脑安装node.js 二、nodejs环境调试 vscode打开一个文件夹并创…

valet-windows

现在win可以用valet了,安装开始 环境参考 1》安装PHP 版本7.4.32 2》安装composer 2.4 安装valet 1》composer global require cretueusebiu/valet-windows 2》valet install 3》这里有2中方法,本人选择link valet link [name] 浏览器中输入 name.te…