910数据结构(2019年真题)

news/2025/1/3 3:38:38/

算法设计题

问题1

有一种排序算法叫做计数排序。这种排序算法对一个待排序的表(采用顺序存储)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个元素,扫描待排序的表一趟,统计表中有多少个元素的关键字比该元素的关键字小。假设对某一个元素,统计出数值为count,那么这个元素在新的有序表中的合适的存放位置即为count。
(1)设计实现计数排序的算法。
(2)对于有n个元素的表,比较次数是多少?
(3)与简单选择排序相比,哪种方法更好?为什么?

void countSort(int A[], int B[], int n){int i,j,k,count;for(i=0; i<n; i++){count = 0;k = A[i];for(j=0; j<n; j++){if(A[j] < k){count++;}}B[count] = k;}
}
2)对于有n个元素的表,每个元素都要与n个元素(含自身)进行比较,关键字的比较总次数是n^2
3)简单选择排序比这种计数排序好,因为对有n个元素的数据表进行简单排序只需进行1+2+...+(n-1)=n(n-1)/2,且可在原地进行排序。

问题2

设二叉树T采用二叉链表存储,设计一个算法,求指定结点p的父结点。要求:
(1)描述算法的基本设计思想。
(2)根据设计思想,给出C语言描述算法,关键之处请给出简要注释。

1)算法思想:如果树为空或者p是T的孩子结点,返回T;如果T的左孩子为p的父结点,返回对左孩子进行递归调用的结果,无需找右孩子;如果T的右孩子为p的父结点,返回对右孩子进行递归调用的结果;如果左右孩子都不包含p,返回null。
BTNode *getParent(BTNode *T, BTNode *p){if(T==null || T->lchild==p || T->rchild==p){return T;}BTNode *lchild = getParent(T->lchild, p);if(lchild != null){return lchild;}BTNode *rchild = getParent(T->rchild, p);if(rchild != null){return rchild;}return lchild;
}

选择题错题整理

1.顺序存储表示中,数据元素之间的逻辑关系是由()表示的。
A.指针 B.逻辑顺序 C.存储位置 D.问题上下文
正确答案
C.存储位置
试题分析
顺序存储中数据的逻辑关系是由存储位置表示的,链式存储中数据的逻辑关系是由指针表示的。

2.计算算法的时间复杂度属于()。
A.事前统计的方法
B.事前分析估算的方法
C.事后统计的方法
D.事后分析估算的方法
正确答案
B.事前分析估算的方法
试题分析

3.对于链式队列,在这些插入操作时()。
A.仅修改头指针
B.仅修改尾指针
C.头、尾指针都要修改
D.头、尾指针可能都要修改
正确答案
D.头、尾指针可能都要修改
试题分析
对于链式队列,一般插入新元素时仅修改队尾指针即可,但有一种特殊情况,即向空队列插入新元素时,需要同时修改队头指针和队尾指针。所以选D。

4.一个广义表(x,(a,b,c))的表尾是()。
A.x B.(a,b,c) C.(a,b,©) D.((a,b,c))
正确答案
D.((a,b,c))
试题分析
广义表的表尾指的是除表头之外的其他元素组成的
注:表尾不是最后一个元素,而是一个子表。

简答题

1.简述数据结构与数据类型的区别。

2.简述线性表、栈和队列的异同。

3.如果一棵哈夫曼树T有n0个叶子结点,那么,树T有多少个结点?要求给出求解过程。

4.设T是一棵AVL树,若想用AVL树的插入算法向树中插入元素K,如果在T中查找K失败且查找K的路径上所有结点的平衡因子都为0,那么在插入新元素K时,树T的高度是否一定增加?为什么?


http://www.ppmy.cn/news/1133509.html

相关文章

element安装指定版本ui

安装指定版本的Element UI&#xff0c;可以执行以下步骤&#xff1a; 打开您的终端&#xff0c;并在项目的根目录中运行以下命令&#xff1a; npm install element-ui<version>其中&#xff0c;<version>是您要安装的特定版本号。比如&#xff0c;如果您要安装版…

std::initializer_list详解

std::initializer_list介绍 initializer_list是C11提供的一种新类型&#xff0c;其定义于头文件<initializer_list>中&#xff0c;此头文件是工具库的一部分&#xff0c; <initializer_list>定义如下&#xff1a; namespace std {template<class E> class…

eBPF 的发展历程及工作原理

目录 eBPF 是什么 掌握 eBPF 是不是得先成为内核开发者&#xff1f; eBPF 的发展历程是什么样的? eBPF 是怎么工作的? eBPF 是万能的吗? 小结 eBPF 是什么 eBPF 是什么呢&#xff1f; 从它的全称“扩展的伯克利数据包过滤器 (Extended Berkeley Packet Filter)” 来看…

XShell远程连接Ubuntu

环境 系统&#xff1a;Ubuntu 18.04.6 LTS IP&#xff1a;192.168.1.4 ps:查看ubuntu版本 lsb_release -a 查看ubuntu的ip地址 Ubuntu系统准备工作 root权限 打开ubuntu系统后&#xff0c;打开终端&#xff0c;切换为root权限&#xff1a;su root 如果出现su root认证失…

Spring之IoC

文章目录 一.SpringIoC核心概念1.IOC&#xff08;Inversion of Control&#xff09;控制反转2.DI&#xff08;Dependency Injection&#xff09;依赖注入 二.bean的实例化1.构造方法实例化bean2.静态工厂方法实例化bean 三.Bean的生命周期1.Bean的实例化2.设置属性3.Bean初始化…

第四十一章 持久对象和SQL - Storage

文章目录 第四十一章 持久对象和SQL - StorageStorage存储定义概览持久类使用的Globals注意 第四十一章 持久对象和SQL - Storage Storage 每个持久类定义都包含描述类属性如何映射到实际存储它们的Global的信息。类编译器为类生成此信息&#xff0c;并在修改和重新编译时更新…

OSI体系结构和TCP/IP体系结构

在第一章&#xff08; 计网第一章 &#xff09;的时候&#xff0c;曾经提到过OSI体系结构和TCP/IP体系结构&#xff0c;并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 一.OSI体系结构&#xff1a; 通信子网&#xff1a; 计算机网络在逻辑功能上可以分为…

【Java 进阶篇】MySQL数据库范式详解

范式是数据库设计中的一种理论方法&#xff0c;旨在通过减少数据冗余来提高数据存储的有效性和完整性。在MySQL数据库中&#xff0c;范式设计是一个重要的概念&#xff0c;它有助于组织和管理数据&#xff0c;确保数据的一致性和可靠性。本文将深入探讨数据库范式&#xff0c;包…