软考-软件设计师中级备考 13、刷题 数据结构

news2025/5/11 6:35:32

倒计时17天时间不多了,数据库、UML、等知识点有基础直接略过,法律全靠考前的一两天刷题,英语直接放弃。

一、数据结构:链表、栈、队列、数组、哈希表、树、图

1、关于链表操作,说法正确的是:
A)新增一个头结点需要遍历链表         B) 新增一个尾节点需要遍历链表

C)删除最后一个节点需要遍历链表     D)删除第一个节点需要遍历链表

答案是C,答题关键:1)理解链表的定义,2)说法正确/错误的是

去年真题,题目有争议,但是排除法可破。题目应为对于拥有头指针与尾指针的链表,删除最后一个节点需要查找倒数第二个节点,考察点:链表的查找需要遍历。

2.1、设栈初始时为空,对于入栈序列1,2,3,......,n这些元素经过栈之后得到栈序列P1,P2,P3,......,Pn
若P3=4,则p1,p2不可能的取值是(C)
A)6,5      B) 2,3     C)3,1     D)3,5

栈  先入后出
排除法   A=》6,5,4=》成立
              B=》2,3,4=》1,2入栈后2出栈,3入栈后3出栈,4入栈后4出栈=》成立
              C=》3,1,4=》???
              D=》3,5,4=》1,2,3入栈后3出栈,4,5入栈后5出栈4出栈

2.2、2023真题:利用栈对算数表达式10*(40-30/5)+20求值时,存放操作数的栈(初始为空)的容量至少为(4)才能满足暂存该表达式中的运算数或运算结果的要求?
      先计算括号内的除法

  1. 开始扫描表达式,首先遇到操作数 10,将 10 入栈,此时操作数栈:[10]
  2. 遇到左括号 (,继续扫描,遇到操作数 40,将 40 入栈,此时操作数栈:[10, 40]
  3. 遇到操作数 30,将 30 入栈,此时操作数栈:[10, 40, 30]
  4. 遇到操作数 5,将 5 入栈,此时操作数栈:[10, 40, 30, 5]。 // 此时栈中元素数量达到最多
  5. 遇到除号 /,从操作数栈中弹出两个操作数 5 和 30(先弹出 5,再弹出 30),计算 30÷5 = 6,将结果 6 入栈,此时操作数栈:[10, 40, 6]
  6. 遇到减号 -,从操作数栈中弹出两个操作数 6 和 40(先弹出 6,再弹出 40),计算 40 - 6 = 34,将结果 34 入栈,此时操作数栈:[10, 34]
  7. 遇到右括号 ),遇到乘号 ×,从操作数栈中弹出两个操作数 34 和 10(先弹出 34,再弹出 10),计算 10×34 = 340,将结果 340 入栈,此时操作数栈:[340]
  8. 遇到操作数 20,将 20 入栈,此时操作数栈:[340, 20]
  9. 遇到加号 +,从操作数栈中弹出两个操作数 20 和 340(先弹出 20,再弹出 340),计算 340 + 20 = 360,将结果 360 入栈,此时操作数栈:[360]

3、某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a、b、c、d依次全部入队列,之后进行出队操作,则不能得到的出队序列是
A)dbac    B)cabd    C)acdb    D)bacd

对于普通队列,由打饭排队先到先得可破(先入先出FIFO),所以会考察变种题比如两端入队、一端出队问题。

答案是C,因为是依次入队列,出队时a和b肯定是挨着的,可以将a和b看成是一个整体,用排除法解题。设ab=m、ba=n

A)dnc    B)cmd    C)acdb    D)ncd   =》选C

链表和数组都可以实现队列,当使用数组+首尾指针实现队列时,不需要(无法)移动队内元素,由于数组大小是固定的所以存在溢出的问题,由于顺序存储所以存在假溢出问题,针对假溢出=》循环队列

4、(对比链表)采用数组实现队列的优点是入队和出队操作不需要移动队内元素
      数组+首尾指针

      循环队列是数组实现队列的改进算法,通过取模运算避免假溢出
      数组+首尾指针+取模运算 rear = (rear + 1) % maxSize、 front = (front + 1) % maxSize

4.1 单纯的数组题,考察按行优先/按列优先,寻址

以上图3x3的二维数组为例     按行:a00,a01,a02,a10,a11,a12,a20,a21,a22

                                               按列:a00,a10,a20,a01,a11,a22,a02,a12,a22


      1)已知二维数组A按行优先方式存储,每个元素占用2个存储单元,第一个元素A[0][0]的地址为100,元素A[3][3]的存储地址是220,则元素A[5][5]的地址是(300)

      2)已知二维数组A按列优先方式存储,每个元素占用2个存储单元,第一个元素A[0][0]的地址为100,元素A[3][3]的存储地址是220,则元素A[5][5]的地址是(300)

5.1、某树共有n个节点,其中所有分支节点的度为K,则该树中叶子节点的个数为:

A、  (n(k+1)-1)/k    B、   (n(k+1)+1)/k   C、  (n(k-1)+1)/k    D、  (n(k-1)-1)/k
答案是C,死记硬背 ,如果记不住,那假设树有2个节点,=》所有分支节点的度为1,带入公式。

5.2、已知树T的度为4,且度为4的结点数为7个、且度为3的结点数为5个、且度为2的结点数为8个、且度为1的结点数为10个,那么T的叶子节点个数为(40)

总结点数:4*7+3*5+2*8+1*10+1=70    非叶子节点个数:7+5+8+10=30    =》70-30=40

6、当一颗非空二叉树的()时,对该二叉树进行中序遍历和后续遍历所得的序列相同

A)每个非叶子节点都只有左子树    B)每个非叶子节点都只有右子树

C)每个非叶子节点的度都为1    D)每个非叶子节点的度都为2

答案是->根

二叉树是一种每个节点最多有两个子树的树结构,这两个子树分别称为左子树右子树

前序遍历:根->->右    中序遍历:左->根->右    后序遍历:左->->根 

口诀是简化过得,实际运用为算法
前序遍历:根->左子树(递归)->右    

中序遍历:左子树(递归)->根->右子树(递归)    

后序遍历:左子树(递归)->右子树(递归) ->根 

再次强化:
7、已知某二叉树的先序遍历序列为A B C D E F、中序遍历序列为B A D C F E,则可以确定该二叉树()
A)是单支树(即非叶子结点都只有一个孩子)   B)高度为4

C)根节点的左子树为空                                  D)根节点的右子树为空 

答案是B,排除法,根节点的左子树为空不符合中序遍历C不对根节点的右子树为空不符合中序遍历D不对=》A也不对,单支树属于二叉树,遇到二叉树公式题,巧用单支树举例

19年真题:某二叉树的中序,先序遍历序列分别为{20,30,10,50,40},{10,20,30,40,50},则该二叉树的后序遍历序列为()   {30,20,50,40,10}

先序,中序遍历序列 {10,20,30,40,50},{20,30,10,50,40}
=》10是根节点所以肯定在最后一个 排除法,20、30属于左子树  排除法、50,40属于右子树  排除法

8、当二叉树中的节点数目确定时,(B)的高度一定是最小的。
A) 二叉排序树  B)完全二叉树   C)线索二叉树   D)最优二叉树

深度为3的完全二叉树如下图,具有n个节点的完全二叉树的深度为⌊log2n⌋+1  ,⌊⌋表示向下取整,带入6和7,得到的结果都是三。
 

                                    (满二叉树)

2021年真题   若某二叉树中共有1024个节点,则该二叉树的高度区间是()
最高是1024即单支树,最低是完全二叉树⌊log2n⌋+1=》11  =》[11,1024]  


9、最优二叉树(哈夫曼树)
以下关于哈夫曼树的叙述中错误的是(D)
A 权值越大的叶子离根结点越近       B 哈夫曼树中不存在只有一个子树的结点
C 哈夫曼树中的结点总数一定为奇数  D 权值相同的结点到树根的路径长度一定相同

带权二叉树是一种 每个节点(通常指叶子节点)都带有权值 的二叉树。权值可以是任意给定的数值,而带权路径长度(WPL)是指从根节点到每个叶子节点的路径长度(边数)乘以该叶子节点权值的总和

哈夫曼树是一种 特殊的带权二叉树,它满足 带权路径长度(WPL)最小 的条件,因此也被称为 “最优二叉树”。其构造方法是通过哈夫曼算法,每次选择权值最小的两个节点合并,直到形成一棵完整的二叉树。

假设有三个叶子节点,权值分别为 1、2、3,构件哈夫曼树,画图表示,并计算权值

  • 权值为1的叶子节点的带权路径长度为2*1 = 2(从根节点到该叶子节点经过2条边);
  • 权值为2的叶子节点的带权路径长度为2*2 = 4;
  • 权值为3的叶子节点的带权路径长度为2*3 = 6。
  • 2+4+6=12;

2023年真题  一颗哈夫曼树共有127个结点,对其进行哈夫曼编码,功能得到(64)个字符编码
              二叉树中结点总数n与度为0、度为1、度为2的结点数之间的关系为n = n0 + n1 + n2
              对于哈夫曼树n1 = 0,n0​=n2​+1  =》 n0 = 64

10、设有5个字符,根据其使用频率为其构造哈夫曼编码。以下编码方案中()是不可能的。
A) {111,110,101,100,0}      B{0000,0001,001,01,1}    

C){11,10,01,001,000}        D{11,10,011,010,000}

哈夫曼编码是一种前缀编码,即对于一组编码,任何一个编码都不是其他编码的前缀

本题通过前缀无法判断
 

根据哈夫曼编码的构造规则和前缀码的Kraft不等式分析:

选项D的编码{11,10,011,010,000}

长度分布:2个长度为2的编码,3个长度为3的编码。

Kraft总和=1:计算为 2*2^-2+3*2^-3=7/8<1=》D
 

11、某简单无向连通图G的顶点数为n,则图G最少和最多分别有()条边。
n-1,n*(n-1)/2     加上顶点数为1=》只有0条边,排除法


12、设有向图G具有n个顶点、e条弧,采用邻接表存储,则完成深度/广度优先遍历的时间复杂度为 O(n + e)

13、对于如下所示的有向图,其邻接矩阵是一个(5*5)矩阵,采用邻接链表存储时顶点的表结点个数为2,顶点5的表结点个数为0,顶点2和3的表结点个数分别为(2.2)

空1)行列数都为节点个数
空2)看箭头指向别人几条


 

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

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

相关文章

centos的根目录占了大量空间怎么办

问题 当根目录磁盘不够时&#xff0c;就必须删除无用的文件了 上面的&#xff0c;如果删除/usr 或/var是可以释放出系统盘的 定位占空间大的文件 经过命令&#xff0c;一层层查哪些是占磁盘的。 du -sh /* | sort -rh | head -n 10 最终排查&#xff0c;是有个系统日志占了20…

电子电器架构 --- 新能源高压上下电那点事一文通

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

每日算法-250510

每日算法学习记录 - 250510 1. LeetCode 2086. 喂食仓鼠的最小食物桶数 题目描述: 解题思路 这是一个典型的贪心问题。我们的目标是用最少的食物桶喂饱所有仓鼠。 解题过程 核心思想是&#xff1a;当遇到一只仓鼠时&#xff0c;如何放置食物桶才能最有效地利用这个桶。 …

渗透测试行业术语1

渗透测试行业术语1 1. 肉鸡 所谓“肉鸡”是一种很形象的比喻&#xff0c;比喻那些可以随意被我们控制的电脑&#xff0c;对方可以是 WINDOWS 系统&#xff0c;也可以是 UNIX/LINUX 系统可以是普通的个人电脑&#xff0c;也可以是大型的服务器我们可以象操作自己的电脑那样来操…

【大模型】使用 LLaMA-Factory 进行大模型微调:从入门到精通

使用 LLaMA-Factory 进行模型微调&#xff1a;从入门到精通 一、环境搭建&#xff1a;奠定微调基础&#xff08;一&#xff09;安装依赖工具&#xff08;二&#xff09;创建 conda 环境&#xff08;三&#xff09;克隆仓库并安装依赖 二、数据准备&#xff1a;微调的基石&#…

使用Python 打造多格式文件预览工具 — 图、PDF、Word、Excel 一站式查看

在日常办公或文件管理场景中&#xff0c;我们经常面临这样的问题&#xff1a;在一个文件夹中短时间内产生了大量不同类型的文件&#xff08;如图片、PDF、Word、Excel&#xff09;&#xff0c;我们需要快速浏览和筛选这些文件的内容&#xff0c;却不希望一个个打开它们。有没有…

[docker基础四]容器虚拟化基础之 LXC

目录 一 认识LXC 二 LXC容器操作实战 1&#xff09;实战目的 2&#xff09;基础知识 lxc-checkconfig lxc-create lxc-start lxc-ls lxc-info lxc-attach lxc-stop lxc-destory 3&#xff09;安装LXC(我的是Ubuntu) 4&#xff09;操作实战 1. 检查 lxc 是否运行…

路由策略和策略路由的区别以及配置案例

区别 路由策略&#xff1a;路由策略是通过ACL等方式控制路由发布&#xff0c;让对方学到适当路由条目&#xff0c;比如有20条路由&#xff0c;只想让某个路由器学到10条&#xff0c;可以通过路由策略进行过滤。 策略路由&#xff1a;策略路由是通过定义策略和应用&#xff0c…

MAD-TD: MODEL-AUGMENTED DATA STABILIZES HIGH UPDATE RATIO RL

ICLR 2025 spotlight paper 构建能够在少量样本下学习出优良策略的深度强化学习&#xff08;RL&#xff09;智能体一直是一个极具挑战性的任务。为了提高样本效率&#xff0c;近期的研究尝试在每获取一个新样本后执行大量的梯度更新。尽管这种高更新-数据比&#xff08;UTD&am…

PyTorch API 10 - benchmark、data、批处理、命名张量

基于 PyTorch 2.7 文章目录 基准测试工具 - torch.utils.benchmarktorch.utils.bottlenecktorch.utils.checkpointtorch.utils.cpp_extensiontorch.utils.data数据集类型映射式数据集可迭代式数据集 数据加载顺序与采样器加载批处理与非批处理数据自动批处理&#xff08;默认情…

后缀表达式+栈(详解)(c++)

前言 很抱歉&#xff0c;上一期没有介绍栈stack的用法&#xff0c;今天简要介绍一下&#xff0c;再讲讲后缀表达式&#xff0c;用stack栈做一些后缀表达式的练习。 栈 栈stack是c中系统给出的栈&#xff0c;有了它&#xff0c;就不用自己创建栈啦&#xff01; 头文件 栈sta…

[C++类和对象]构造函数和析构函数

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f; 并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6 个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会…

onenet连接微信小程序(mqtt协议)

一、关于mqtt协议 mqtt协议常用于物联网&#xff0c;是一种轻量级的消息推送协议。 其中有三个角色&#xff0c;Publisher设备&#xff08;客户端&#xff09;发布主题到服务器&#xff0c;其他的设备通过订阅主题&#xff0c;获取该主题下的消息&#xff0c;Publisher可以发…

人脸真假检测:SVM 与 ResNet18 的实战对比

在人工智能蓬勃发展的当下&#xff0c;人脸相关技术广泛应用于安防、金融、娱乐等诸多领域。然而&#xff0c;随着人脸合成技术的日益成熟&#xff0c;人脸真假检测成为保障这些应用安全的关键环节。本文将深入探讨基于支持向量机&#xff08;SVM&#xff09;结合局部二值模式&…

《AI大模型应知应会100篇》第54篇:国产大模型API对比与使用指南

第54篇&#xff1a;国产大模型API对比与使用指南 ——从百度文心到通义千问&#xff0c;一文看懂国内AI平台选型 &#x1f4cc; 摘要 随着中国人工智能产业的快速发展&#xff0c;越来越多的国产大模型平台开始崭露头角。本文将系统梳理当前主流国产大模型 API&#xff08;如…

质量、重力、引力、惯性 的本质,以及虫洞

1、质量 物体,之所以,有质量源自于其微观结构。物体好比一块海绵,浸没在暗物质的海洋里。随暗物质海洋的涌动而不断移动。海绵微观结构越细密,受到暗物质海洋的裹携力就越大(好比汤勺,与漏勺对汤水的阻碍力。又好比纱窗与船帆对风的阻隔力。) 微观结构越细密,在相同表面积…

基于ssm+mysql的快递管理系统(含LW+PPT+源码+系统演示视频+安装说明)

系统功能 管理员功能&#xff1a;个人中心、用户管理、订单管理、快递员管理&#xff1b;快递员功能&#xff1a;查看订单、更新快递状态&#xff1b;派单员功能&#xff1a;订单分配、订单管理&#xff1b;客户功能&#xff1a;订单查询、个人信息维护。 作者&#xff1a;计算…

质心均匀体(引力屏蔽技术)

1、线质心体 陀螺我们都玩过,一个惯性圆盘加一个轴,旋转起来可以独脚而立。(垂直于旋转面的不平衡力,在旋转面旋转180度后,被其自身抵消,故而平衡。可抵消不平衡力的大小,取决于惯性飞轮的质量和旋转的速度)。此时,旋转的陀螺等同于一个轴线质心体(轴线上任意一点提供支…

JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码

本文项目编号 T 180 &#xff0c;文末自助获取源码 \color{red}{T180&#xff0c;文末自助获取源码} T180&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

STM32的SysTick

SysTick介绍 定义&#xff1a;Systick&#xff0c;即滴答定时器&#xff0c;是内核中的一个特殊定时器&#xff0c;用于提供系统级的定时服务。该定时器是一个24位的递减计数器&#xff0c;具有自动重载值寄存器的功能。当计数器到达自动重载值时&#xff0c;它会自动重新加载…