【数据结构】复习题(二)

Hello!大家好,这一篇数据结构复习题是我上个学期复习的时候写的(刚刚在草稿箱发现了!)有一些题目过程都是配了图片的,希望对正在复习数据结构的宝宝们有帮助哦!(还有一个数据结构复习题(一)可以去我的数据结构专栏中找一下!)

一、选择题

  1. 数据的最小单位是()。
    (A)数据项
    (B)数据类型
    (C)数据元素
    (D)数据变量

  2. 设一组初始记录关键字序列为(50,40,95,20,15,70,60,45),则以增量d=4的一趟希尔排序结束后前4条记录关键字为()。
    (A)40,50,20,95
    (B)15,40,60,20
    ©15,20,40,45
    (D)45,40,15,20

  3. 设一组初始记录关键字序列为(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
    ©15,25,35,50,80,85,20,36,40,70
    (D)15,25,35,50,80,20,36,40,70,85
    【归并排序】简要步骤
    ①开始每个数字作为一组。
    ②每次都两两进行比较,直至最后一组。

  4. 一颗完全二叉树上有1001个结点,其中叶子结点的个数为()。
    (A)250
    (B)500
    © 254
    =(D)501
    该完全二叉树的深度为10.
    且第十层上的叶子结点数:1001-511=490
    第九层上的叶子结点数:256-490/2=11
    故总的叶子结点数:501

  5. 设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为()。
    (A)O(log2n)
    (B)O(1)
    ©O(n2)
    (D)O(n)

  6. 设一棵m叉树中度数为0的结点数为No,度数为1的结点数为N1,......,度数为m的结点数为Nm,则No=()。
    A) N1+N2+…+Nm
    (B)I+N2+2N3+3N4+…+(m-1)Nm
    © N2+2N3+3N4+…+(m-1)Nm
    D)2N+3N2+…+(m+1)Nm

  7. 设有序表中有1000个元素,则用二分查找查找元素X最多需要比较()次。
    (A)25
    (B)10
    ©7
    (D)1

  8. 设连通图G中的边集E={(a,(e,d),(d,f),(f, c)}则从顶点a出发可以得到一种深度优先遍历的顶点序列为()。
    (A)abedfc
    (B)acfebd
    ©aebdfc
    (D)aedfcb

  9. 设输入序列是1、2、3、······、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是()。
    (A)n-i
    (B)n-1-i
    ©n+1-i
    (D)不能确定

  10. 设一组初始记录关键字序列为(45,80,55,40,42,85),则以第一个记录关键字45为基准而得到一趟快速排序的结果是()。
    (A)40,42,45,55,80,83
    (B)42,40,45,80,85,88
    ©42,40,45,55,80,85
    (D)42,40,45,85,55,80

二、应用题
1.计算如图所示的AOE网中各顶点所表示的事件的发生时间ve(j),vl(j),各边所表示的活动的开始时间e(i),e(j) ,并找出其关键路径。
【基本步骤】
①计算事件的最早发生时间 Ve(i)
②计算事件的最晚发生时间 Vl(i)
③计算活动的最早发生时间 e(i)
④计算活动的最晚发生时间 l(i)
⑤计算活动的时间余量 l(i)-e(i)
⑥写出关键路径
如图所示:

写出图的拓扑排序,并计算事件也就是顶点的最早和最晚发生时间

(写成图表的形式 等一会算活动的最晚发生时间看着比较直观)

计算活动的最早最晚发生时间

根据时间余量 写出关键路径

三、算法设计题
1.设计判断两个二叉树是否相同的算法。

typedef char datatype;
typedef struct node
{datatype data;struct node *lchild;struct node *rchild;
}bitree;
int judgebitree(bitree* t1,bitree *t2)
{if(t1==NULL && t2==NULL )return 1;else if (t1==NULL || t2==NULL)return 0;else if (t1->data!=t2->data)return 0;else//我觉得这个*就很妙return (judgebitree(t1->lchild,t2->lchild)*judgebitree(t1->rchild,t2->rchild));
}

3.非递归实现二叉树的前序遍历和中序遍历。
先定义好顺序栈。

typedef struct stack
{bintree data[100];int top;
}seqstack;//进栈void push(seqstack *s,bintree t){s->data[s->top]=t;s->top++;}//出栈bintree (seqstack *s){if(s->top!=0){s->top--;return (s->data[s->top];)}elsereturn NULL;}

二叉树前序遍历的非递归实现

//bintree是指向二叉树结点的指针
//typedef bintnode * bintree;
void preorder (bintree t)
{seqstack s;s.top=0;while((t) || (s.top)!=0){if (t){printf("%c",t->data);push(&s,t);t=t->child;}else{t=pop(&s);t=t->rchild;}}
}

二叉树中序遍历的非递归实现

void inorder(bintree)
{seqstack s;s.top=0;while(t!=NULL || (s.top!=0)){if(t){push($s,t);t=t->lchld;}else{t=pop(&s);printf("%c",t->data);t=t->rchild;}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动中断下半部的三种方法

大家好,今天给大家介绍Linux驱动中断下半部的三种方法,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 Linux驱动中断下半部的三种主要方法如下: 软中断&…

java数据结构与算法刷题-----LeetCode693. 交替位二进制数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 位运算 位运算 解题思路:时间复杂度O( 1 1 1)&#…

Open CASCADE学习|实现Extrude功能

首先定义了一些基本的几何元素,如线、圆和平面,然后使用makeExtrudebydir函数来对一个面进行挤出操作。下面是详细过程: 定义Extrude函数:makeExtrudebydir函数接受一个TopoDS_Shape对象和一个gp_Vec对象作为参数。TopoDS_Shape是…

遥感卫星:探索地球的科技之旅

遥感卫星是人类探索地球、理解地球、保护地球的重要工具,其发展历程承载了人类对地球的探索与认知的历程。从最初的概念到如今的高科技应用,遥感卫星技术的发展见证了人类科技的不断进步与创新。 初心萌芽: 遥感卫星的发展始于20世纪中叶&…

Golang | Leetcode Golang题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; func removeDuplicates(nums []int) int {n : len(nums)if n 0 {return 0}slow : 1for fast : 1; fast < n; fast {if nums[fast] ! nums[fast-1] {nums[slow] nums[fast]slow}}return slow }

window10轻松使用k8s

Docker Desktop安装篇 1、win10安装 1、下载安装包 https://www.docker.com/products/docker-desktop/ 官网下载安装包 2、配置win10支持虚拟化 不勾选Hyper-V&#xff0c;容易出错 3、安装WSL配置window支持linux Windows Subsystem for Linux (WSL) 安装 Linux 子系统&am…

一辆汽车的节拍时间是怎样的?

节拍时间&#xff0c;又称 takt time&#xff0c;是德语中“节奏”的意思。在汽车制造业中&#xff0c;它指的是按照客户需求和生产计划&#xff0c;生产一辆汽车所需的时间。这个时间是固定的&#xff0c;它决定了生产线上每个工序的操作速度和节奏&#xff0c;是生产线上所有…

Fuel tank position

Fuel tank position 汽车油箱位置在哪里&#xff0c;加油的时候就不会听错方向

IEDA 启动项目时出现 java: java.lang.OutOfMemoryError: GC overhead limit exceeded 异常

问题 通过Idea启动项目时&#xff0c;出现java: java.lang.OutOfMemoryError: GC overhead limit exceeded 内存溢出问题&#xff1b; 解决方案 错误是发生在编译阶段&#xff0c;而不是运行阶段&#xff1a; 【1】idea编译Java项目使用的虚拟机和idea软件自身使用的虚拟机是…

支付系统核心逻辑 — — 状态机(JavaGolang版本)

支付系统核心逻辑 — — 状态机 代码地址&#xff1a;https://github.com/ziyifast/ziyifast-code_instruction/tree/main/state_machine_demo 1 概念&#xff1a;FSM&#xff08;有限状态机&#xff09;&#xff0c;模式之间转换 状态机&#xff0c;也叫有限状态机&#xff08…

Vue.js npm错误:transpileDependencies.map不是一个函数

这个错误通常是由于npm版本不兼容导致的。在旧版本的npm中&#xff0c;transpileDependencies是一个字符串数组&#xff0c;我们可以直接配置需要编译的依赖库。而在较新版本的npm中&#xff0c;transpileDependencies被改成了一个对象&#xff0c;并且需要使用map()方法来处理…

npm命令卡在reify:eslint: timing reifyNode:node_modules/webpack Completed in 475ms不动

1.现象 执行npm install命令时&#xff0c;没有报错&#xff0c;卡在reify:eslint: timing reifyNode:node_modules/webpack Completed in 475ms不动 2.解决办法 &#xff08;1&#xff09;更换淘宝镜像源 原淘宝 npm 域名http://npm.taobao.org 和 http://registry.npm.ta…