数据结构算法第二套试卷小题

news2024/12/28 5:49:36

1.哈夫曼树

在这里插入图片描述
在哈夫曼树中,每个非叶子节点都有两个子节点(因为哈夫曼树是一种二叉树),而叶子节点没有子节点。如果用二叉链表作为存储结构,每个节点需要包含两个指针域,分别指向其左孩子和右孩子。因此,在哈夫曼树中总共有 2m 个指针域。

2.循环队列知识点

1.队列尾指针前进: Q.rear=(Q.rear+1)%MaxSize;
2.队列长度:(Q.rear-R.front+MaxSize)%MaxSize;
3.循环队列判断空的条件:Q.front=Q.rear;
4.判断队列是否为满:(Q.rear+1)%MaxSize=Q.front;
2.1入队:

bool enQueue(sQueue &queue,ElemType x){
  //1.首先判断队列是否为满
  if((queue.rear+1)%MaxSize==queue.front) return false; //(Q.rear+1)%MaxSize==Q.front;
  //2.添加入队列
  queue.data[queue.rear]=x;
  queue.rear=(queue.rear+1)%MaxSize;
  return true;
}

2.2出队:

//首先判断是否为空,若不为空,将队列front元素pop
bool Dequeue(Queue &queue,ElemType &x){
  //1.判断队列中是否存在元素
  if(queue.rear==queue.front) return false;
  //2.将头指针元素赋值x
  x=queue.data[queue.front];
  //3.头指针前进(因为front指向的元素已被pop)
  queue.front=(queue.front+1)%MaxSize;
  return true; 
}

补:链式队列

1.判断队列是否为空的条件:

if(queue.front==NULL&&queue.rear==NULL)

2.链式入队:

void enQueue(LinkQueue &queue,ElemType x){
  //1.首先创建节点,并将其赋值
  LinkNode* newNode=(LinkNode*)malloc(sizeof(LinkNode));
  newNode->data=x;
  //2.连上尾指针
  queue.rear->next=newNode;//连上尾指针:queue.rear->next=newNode
  queue.rear=newNode; //更新尾指针
}

3.链式出队:

bool DeQueue(LinkQueue &queue,ElemType &x){
  //1.判断队列是否为空
  if(queue.front==NULL&&queue.rear==NULL) return false; //在循环队列中判断队列是否为空的条件是:queue.front==queue.rear
  //2.出队:首先用一个临时节点继承queue.front——>2.然后更新queue.front,使其指向临时节点的下一个节点——>3.最后free掉当前的临时节点
  LinkNode *cur=queue,front;
  queue.front=cur.next;
  free(cur);
  return true;
}
LinkNode*cur=queue.front;
queue.front=cur.next;
free(cur);

3.前中后序遍历

老办法,先找根节点,然后根据提供的两种遍历方式->确定树的结构
在这里插入图片描述

4.完全图,连通图

完全无向图:n个顶点有n*(n-1)/2条边
完全有向图:n个顶点有n*(n-1)条边
连通图:至少有n-1条边
完全连通图一定是有向图,但反之不一定,因为并不是每个顶点到其他顶点都有边的
邻接表的表头节点的个数与顶点个数相关
邻接表的每个节点的连接个数:与图中当前节点相连的边数相关

5.二叉树的最小高度

直接夹逼算即可,比如2000个节点,2^11-1>2000,2的十次方-1代表高度为10的树的最大节点数<2000,所以最小高度为11
在这里插入图片描述

6.快排的思路:

1.首先是确定基准元素privot——>2.然后进行分区操作,大于privot的在右边,小于privot的在左边(按比较次序进行排序)——>3.分区后,递归当前基准元素的左右侧分区(重复1,2操作)
[7, 2, 9, 1, 6, 8, 5, 3] 进行排序。
在这里插入图片描述
请添加图片描述

7.HASH查找技术

1.是如何映射到哈希表中的位置——哈希函数的设计
2.不同键映射到相同位置——如何解决哈希冲突的方法
为了能有效地应用HASH查找技术,必须解决的两个问题是哈希函数的设计处理哈希冲突的方法哈希函数的设计决定了如何将键映射到哈希表中的位置,而处理哈希冲突的方法则确定了当不同键映射相同位置时如何进行处理,以确保数据的准确性和高效的查找操作。

8.栈的操作

8.1进栈:

typedef struct{
  int s[100]; //栈存储元素的地方
  int top; //顶点指针
}sqStack;

void push(sqStack &stack,int x){ //元素x进栈
  if(stack.top==m-1) printf("overflow"); //满溢出
  else {
   stack.s[stack.top]=x;
   stack.top++;
  }
}

8.2判断栈为空的条件,栈满条件
stack.top==-1;
stack.top==MaxSize-1;

8.3出栈操作:

bool pop(Stack &stack,ElemType &x){
  //1.首先判断栈是否为空
  if(stack.top==-1) return false;
  //2.若不为空,将栈顶元素赋值,且stack.top--
  x=stack.data[stack.top--];
  return true;
}

8.4进栈操作:

bool push(Stack &stack,int x){
   //1.首先判断栈是否满了
   if(stack.top==MaxSize-1) return false;
   //2.入栈操作;将x元素赋值给stack.data[stack.top++]=x
   stack.data[stack.top++]=x;
   return true; 
}

8.4栈的注意事项:
1.另外,注意栈只能确定入栈次序,但是并不能确定出栈次序,还需根据栈的容量来具体分析
2.三个不同元素进栈,能够得到6种不同的出栈序列(选中第一个有三种可能,剩下有两个位置,3*2)

9.树的空指针域

为:n0的空指针个数2+n11

10.无向图的常见性质

无向图中,所有顶点的度数之和=边的数量的两倍,所以若顶点度数之和为d,那么边数e=d/2

11.初始堆

1.先按照顺序,变成一颗完全二叉树——>2.然后从叶子节点开始,自下而上,调整堆(根父节点相比,一步步调整上去)
请添加图片描述

 
for(int i=n/2;i>0;i--){
    par = i;//父节点
    while(par*2<=n){
        lch = par*2;//左子节点
        rch = lch+1;//右子节点
        min = lch;
        if(rch<=n){//有两个子节点
            if(arr[lch]>arr[rch]){
                min = rch;
            }
        }
        if(arr[min]<arr[par]){
            swap(arr,min,par);
            par = min;    //往下遍历
        }
    }
    
}

插入法:将n个记录依次插入二叉树中,若其比父节点值小,则浮操作,直到其比父节点大

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

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

相关文章

SystemVerilog构造、包

包 包提供了一种共享不同构造的附加方式。他们的行为与VHDL包。包可以包含函数、任务、类型和枚举。的语法包是&#xff1a; package package_name; items endpackage : package_name 最终的package_name不是必需的&#xff0c;但它使代码更易于阅读。包是import命令在其他…

渗透测试——信息收集

信息收集 前言 信息收集是在做渗透时找尽可能的多的信息&#xff0c;为之后的渗透做铺垫。信息收集的方法有很多 比如&#xff0c;页面、真实的IP、域名/子域名、敏感目录/文件、端口探测、CMS指纹识别、操作系统识别 1. 页面信息收集 拿到域名后&#xff0c;从网站的url中…

c++ 二分查找(迭代与递归)

二分搜索被定义为一种在排序数组中使用的搜索算法&#xff0c;通过重复将搜索间隔一分为二。二分查找的思想是利用数组已排序的信息&#xff0c;将时间复杂度降低到O(log N)。 二分查找算法示例 何时在数据结构中应用二分查找的条件&#xff1a; 应用二分查找算法&#xff1a;…

Java程序员如何通过跳槽薪资翻倍,java多态面试题

Spring 面试题 1、不同版本的 Spring Framework 有哪些主要功能&#xff1f; 2、什么是 Spring Framework&#xff1f; 3、列举 Spring Framework 的优点。 4、Spring Framework 有哪些不同的功能&#xff1f; 5、Spring Framework 中有多少个模块&#xff0c;它们分别是什…

一文搞懂所有 VAE 模型

目录 收起 1 引言 2 符号术语 2.1 AE中的符号 2.2 VAE中的符号 3 基础自编码器 3.1 Autoencoder 3.2 Denoising Autoencoder 随着Stable Diffusion和Sora等技术在生成图像和视频的质量与帧率上取得显著提升&#xff0c;能够在一个低维度的压缩空间进行计算变得越发重要…

【数据结构与算法】二分查找题解(二)

这里写目录标题 一、81. 搜索旋转排序数组 II二、167. 两数之和 II - 输入有序数组三、441. 排列硬币四、374. 猜数字大小五、367. 有效的完全平方数六、69. x 的平方根 一、81. 搜索旋转排序数组 II 中等 已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必…

7-18 彩虹瓶(Python)

彩虹瓶的制作过程&#xff08;并不&#xff09;是这样的&#xff1a;先把一大批空瓶铺放在装填场地上&#xff0c;然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。 假设彩虹瓶里要按顺序装 N 种颜色的小球&#xff08;不妨将顺序就编号为 1 到 N&#xff09;。现在工…

vue3+elementPlus:el-table-column表格列动态设置单元格颜色

:cell-style属性 //html<el-tableempty-text"暂无数据":data"datalist.table":max-height"height"row-key"id"border:cell-style"cellStyle"> <el-table>//js //动态设置单元格颜色 const cellStyle ({ row, c…

矢量数据库简单介绍:在 Postgres使用 pg_vector

矢量数据库简单介绍&#xff1a;在 Postgres使用 pg_vector 作为向人工智能大规模转变的一部分&#xff0c;矢量数据库越来越受欢迎。它们也称为矢量化数据库&#xff0c;在人工智能领域发挥着至关重要的作用&#xff0c;因此了解它们的工作原理非常重要。为此&#xff0c;我们…

某准网招聘接口逆向之WebPack扣取

​​​​​逆向网址 aHR0cHM6Ly93d3cua2Fuemh1bi5jb20v 逆向链接 aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vc2VhcmNoP3BhZ2VOdW09MSZxdWVyeT1weXRob24mdHlwZT01 逆向接口 aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vYXBpX3RvL3NlYXJjaC9qb2IuanNvbg 逆向过程 请求方式&#xff1a;GET 参数构成…

FPGA高端项目:FPGA基于GS2971的SDI视频接收+纯verilog图像缩放+多路视频拼接,提供8套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收OSD多路视频融合叠加应用本方案的SDI接收HLS多路视频融合叠加应用本方案的SDI接收GTX…

基于Redis自增实现全局ID生成器(详解)

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P48 - P49 目录 全局ID生成器介绍 基于Redis自增实现全局ID 实现代码 全局ID生成器介绍 背景介绍 当用户在抢购商品时&#xff0c;就会生成订单并保存到数据库的某一张表中&#…

Python 读取写入excel文件

使用Python读取和写入excel的xlsx、xls文件 目录 读取xlsx文件 安装三方库 引入三方库 读取数据 打开文件 表名 最大行数 最大列数 读取一张表 读取整个文件 返回xls整体内容 安装三方包 读取内容 写入xls文件 引入三方库 创建文件并写入数据 报错及解决 报错…

SSL 证书,了解一下常识

公司的网站、应用怎么才能保证在互联网上安全运行&#xff0c;不被攻击、盗取数据呢&#xff1f; 创业必经之路&#xff0c;一步一步走就对了&#xff0c;可能没赶上红利期&#xff0c;但不做就等于0。 概述 SSL 证书&#xff08;SSL Certificates&#xff09;又称数字证书&am…

3/7—21. 合并两个有序链表

代码实现&#xff1a; 方法1&#xff1a;递归 ---->难点 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* mergeTwoLists(struct ListNode *list1, struct ListNode *list2) {/*1.如果l1为…

Vivado使用记录(未完待续)

一、Zynq开发流程 二、软件安装 三、软件使用 字体大小修改&#xff1a;Setting、Font 四、Vivado基本开发流程 1、创建工程 Quick Start 组包含有 Create Project&#xff08;创建工程&#xff09;、 Open Project&#xff08;打开工程&#xff09;、 Open Example Project&…

智慧视频终端解决方案

依托富瀚微智慧视频SOC&#xff0c;提供以视频为核心的智能产品及解决方案

ubuntu設定QGC獲取pixhawk Mini4(PX4 Mini 4) 的imu信息

ubuntu20.04 QGC使用v4.3.0的版本 飛控pixhawk Mini4 飛控上只使用一條micor USB連接電腦&#xff0c;沒有其他線 安裝命令 sudo apt-get remove modemmanager -y sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y sudo apt install libf…

邮件营销新手必读指南?怎样做好邮件营销?

邮件营销的全流程及步骤&#xff1f;做好邮件营销有哪些注意点&#xff1f; 邮件营销作为一种传统却依然高效的推广手段&#xff0c;被众多企业所青睐。对于新手来说&#xff0c;如何开展邮件营销&#xff0c;却是一个值得探讨的话题。AokSend将为你提供一份邮件营销新手必读指…

Java面试题总结10之MySQL索引和锁

索引的基本原理 把无需的数据变成有序的查询 1&#xff0c;把创建了索引的列的内容进行排序 2&#xff0c;对排序结果生成倒排表 3&#xff0c;到倒排表内容上拼上数据地址链 4&#xff0c;在查询的时候&#xff0c;先拿到倒排表内容&#xff0c;再取出数据地址链&#xf…