数据结构 | 北京大学期末试卷查漏补缺

目录

顺序存储

优点

缺点 

适用于: 

链式存储 

优点 

缺点 

适用于:

折半查找为什么要使用顺序存储结构

树的存储结构​编辑

对于一个数据结构,一般包括 

DFS&BFS

什么是递归程序 

C语言不带头结点的单链表逆置 

检测字符串是否对称


​​​​​​​

顺序存储

优点

支持随机访问

不会因为元素之间的逻辑关系而产生额外的存储空间

快速存取元素

缺点 

删除和插入元素的时候要移动大量元素

当线性表变化比较大时,难以确定存储空间的容量

容易产生存储空间碎片 

适用于: 

当线性表容量已知;元素变动不大,需要快速存取元素

链式存储 

优点 

需要删除和插入元素,只需要改变后继指针

缺点 

添加了后继指针,需要更多的储存空间 

适用于:

容量不定,需要频繁删除和添加元素 


折半查找为什么要使用顺序存储结构

折半查找要求使用顺序存储结构,主要是因为这种结构能够提供直接访问元素的能力。在顺序存储结构中,元素按照顺序存储在连续的存储空间中,通常是数组。通过下标可以直接访问元素,这使得折半查找算法能够快速找到中间元素并进行比较。

此外,折半查找还需要表中元素按关键字有序排列。如果元素无序排列,那么无法保证中间元素的大小关系,导致无法准确确定查找范围,从而无法正确找到目标元素。因此,顺序存储结构和有序排列是实现折半查找的必要条件。



树的存储结构

将两个或两个以上的有序表合并成一个新的有序表采用

对于一个数据结构,一般包括 

DFS&BFS

什么是递归程序 


 

C语言不带头结点的单链表逆置 

C语言实现不带头结点的单链表逆置的三种方法_不带头节点的单链表逆置-CSDN博客 

#include <stdio.h>  
#include <stdlib.h>  // 定义链表节点结构体  
struct ListNode {  int val;  struct ListNode *next;  
};  // 逆置链表函数  
struct ListNode* reverseList(struct ListNode* head) {  struct ListNode *prev = NULL, *curr = head, *next = NULL;  while (curr != NULL) {  next = curr->next;  curr->next = prev;  prev = curr;  curr = next;  }  return prev;  
}  // 打印链表函数  
void printList(struct ListNode* head) {  struct ListNode *curr = head;  while (curr != NULL) {  printf("%d ", curr->val);  curr = curr->next;  }  printf("\n");  
}  

检测字符串是否对称

#include <iostream>  
#include <string>  using namespace std;  int f(string s) {  int n = s.length();  for (int i = 0; i < n / 2; i++) {  if (s[i] != s[n - i - 1]) {  return 0;  }  }  return 1;  
}  int main() {  string s1 = "abba";  string s2 = "abab";  int result1 = f(s1);  int result2 = f(s2);  cout << result1 << endl;  // 输出1  cout << result2 << endl;  // 输出0  return 0;  
}

 

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

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

相关文章

window10下载与安装Dubbo Admin,图文说明

0&#xff0c;前言 在学习这篇文章之前&#xff0c;可以先把zookeeper安装一下 安装教程指路&#xff1a;window10下载与安装zookeeper&#xff0c;图文说明 1&#xff0c;下载 拉取代码&#xff0c;一般教程都会让我去github官网拉取&#xff0c;但是因为该网站经常打不开…

如何在小程序中添加字符

随着移动互联网的普及&#xff0c;微信小程序已经成为众多商家的首选。通过微信小程序&#xff0c;商家可以展示产品、服务和品牌形象。那么如何在微信小程序中添加视频内容呢&#xff1f;本文将详细介绍操作步骤。 首先&#xff0c;商家需要登录乔拓云平台&#xff0c;进入门店…

MongoDB 单机安装部署

文章目录 说明1. 下载安装包2. 安装数据库3. 配置 systemctl4. 创建 root 用户 说明 本篇文章介绍 MongoDB 二进制安装的步骤&#xff0c;整个过程还是比较简单。 1. 下载安装包 进入 MongoDB 官网&#xff0c;获取安装包的下载链接&#xff1a; https://www.mongodb.com/tr…

安全运维是做什么的,主要工作内容是什么

安全运维&#xff0c;简称SecOps&#xff0c;是一种集成安全措施和流程到信息技术运维的实践。它的目的是确保在日常运维活动中&#xff0c;如网络管理、系统维护、软件更新等&#xff0c;均考虑并融入安全策略。安全运维的核心是实现安全和运维团队的密切协作&#xff0c;以快…

【自动化测试】selenium元素定位方式大全!

前言 当我们在使用selenium进行自动化测试工作时&#xff0c;元素定位是非常重要的一环&#xff0c;因为我们是借助脚本模拟我们通过鼠标和键盘对元素进行点击、输入内容和滑动操作的&#xff0c;所以准确的元素定位是我们执行测试脚本的重要一环。本文就来给大家介绍一下sele…

竞赛保研 基于CNN实现谣言检测 - python 深度学习 机器学习

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于CNN实现谣言检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&am…

百分比-保留2位小数

有时候工作中有这样的需求&#xff0c;统计各种类型的占比&#xff0c;因此记录一下求百分比的小工具&#xff0c;以后方便自己用到随时来查 /*** 转成百分数* 当前数除以总数* param num1-当前数 ,num2-总数 num1/num2* return rate 保留2位小数的*/public static String …

4.使用 Blazor 构建 Web 应用程序

微软官方培训 了解如何通过 Blazor Web 用户界面框架构建你的第一个 Web 应用程序。 https://learn.microsoft.com/zh-cn/training/paths/build-web-apps-with-blazor/?viewaspnetcore-8.0 8个模块 目录 微软官方培训 1.使用 Blazor 进行 Web 开发的简介 2.使用 Blazor…

Vue中为什么data属性是一个函数而不是一个对象?(看完就会了)

文章目录 一、实例和组件定义data的区别二、组件data定义函数与对象的区别三、原理分析四、结论 一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象&#xff0c;也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:&quo…

安装 PyCharm 2021.1 保姆级教程

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 目前能下载到的最新版本是 PyCharm 2021.1。 请注意对应 Python 的版本&#xff1a; Python 2: 2.7Python 3: >3.6, <3.11…

22 3GPP在SHF频段基于中继的5G高速列车场景中的标准化

文章目录 信道模型实验μ参考信号初始接入方法波形比较 RRH&#xff1a;remote radio head 远程无线头 HTS&#xff1a;high speed train 高速移动列车 信道模型 考虑搭配RRH和车载中继站之间的LOS路径以及各种环境&#xff08;开放或峡谷&#xff09;&#xff0c;在本次实验场…

分享5款为你生活带来便捷的小工具

​ 生活需要一些小巧而贴心的工具&#xff0c;它们能够在细节处为我们带来便捷。这五款工具简洁而实用&#xff0c;看看它们是否适合融入你的生活。 1.图片压缩——TinyPNG ​ TinyPNG是一款图片压缩工具&#xff0c;可以智能地减少WebP、PNG和JPEG图片的文件大小。TinyPNG通…

Jenkins持续集成自动化测试

执行集成构建 持续&#xff0c;自动地构建&测试软件项目代码管理&#xff08;git/svn&#xff09;>编译&#xff08;maven/ant/gradle&#xff09;>打包>测试环境部署>自动化测试 研发体系中的迭代流程 1 源码分支管理&#xff1a; git或者svn, 将不同开发编…

【限时Free】新增普刊!计算机/社科/医学等多领域,1个月见刊!

普刊极速发表 1 计算机类 World Journal of Information Technology 【Print ISSN】2959-9903&#xff1b; 【Online ISSN】2959-9911&#xff1b; 【出版社】Upubscience Publisher出版社 【发表周期】1-2个月左右出刊&#xff1b; 【接收领域】专注于涉及技术和IT管理的…

用于从未配对的3D医学图像中进行多模式分割的统一生成对抗性网络

Unified generative adversarial networks for multimodal segmentation from unpaired 3D medical images 用于从未配对的3D医学图像中进行多模式分割的统一生成对抗性网络背景积累 贡献难点&#xff1a;贡献&#xff1a; 实验Effect of the weight λshape&#xff08;形状损…

Android MVI架构之UI开发指南

Android MVI架构之UI开发指南 在整个应用程序架构中&#xff0c;UI层并不是唯一的层级。除了UI层之外&#xff0c;您还可以找到数据层&#xff0c;有时还有领域层。根据Android架构文档&#xff1a; UI层在屏幕上显示数据。数据层暴露应用程序数据&#xff0c;并包含大部分业…

自动评估作业,支持订正最终得分、查看关联代码|ModelWhale 版本更新

冬至时节&#xff0c;2023 已进入尾声&#xff0c;ModelWhale 于今日迎来新一轮的版本更新&#xff0c;与大家一起静候新年的到来。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; 自动评估作业 新增 提交代码&#xff08;团队版✓ &#xff09;新增…

ARM GIC(四) gicv3架构基础

GICv3架构是GICv2架构的升级版&#xff0c;增加了很多东西。变化在于以下&#xff1a; 使用属性层次&#xff08;affinity hierarchies&#xff09;&#xff0c;来对core进行标识&#xff0c;使gic支持更多的core 将cpu interface独立出来&#xff0c;用户可以将其设计在core…

Vue CLI 设置 publicPath:打包后的应用可部署在任意路径

前言 领导要重新部署多个应用环境&#xff0c;且不受路径层级影响。 于是找到了 Vue CLI 配置 publicpath 配置说明 下图所示&#xff1a; / &#xff1a;默认值&#xff0c;应用部署在根路径上&#xff1b;./&#xff1a;注意前面加了一个点&#xff0c;应用可部署在任意路…

算法基础之扩展欧几里得算法

扩展欧几里得算法 核心思想&#xff1a;裴蜀定理 : 欧几里得算法: 辗转相除法求最大公约数 传入参数(int a,int b,int &x,int &y) 递归(int b,int a%b,int y,int x) xy换位置 方便计算(推公式) #include<iostream>#include<algorithm>using namespac…