当前位置: 首页 > news >正文

13.数据结构(软考)

13.数据结构(软考)

13.1:线性表

13.1.1 顺序表

        顺序存储方式:数组的内存是连续分配的并且是静态分配的,即在使用数组之前需要分配固定大小的空间。

时间复杂度:

        读:O(1)

        查询:1,(n+1)/2,n

        插入:1,(n+1)/2,n

        删除:1,(n+1)/2,n-1

优势在于读操作。

 13.1.2 链表

        链表(linked-list)存储方式:链表的内存是不连续的,前一个元素存储地址的下一个地址中存储的不一定是下一个元素。链表通过一个指向下一个元素地址的引用将链表中的所有元素串起来。

尾结点:最后一个有效结点。
首结点:第一个有效结点。
头结点:第一个有效结点之前的那个结点,存放链表首地址。
头指针:指向头结点的指针变量。
尾指针:指向尾结点的指针变量。

特点:

        ①n个结点离散分布,彼此通过指针相联系。

        ② 除头结点和尾结点外,每个结点只有一个前驱结点和一个后续结点。头结点没有前驱结点,尾结点没有后继结点。
        ③头结点并不存放有效数据,只存放链表首地址。其头结点的数据类型和首结点类型一样。
        ④加头结点的目的是方便对链表的操作,比如在链表头部进行结点的删除、插入。

 

 13.1.2.1 单项链表

插入: 

删除当前节点的下一个节点:

删除当前节点:

        这里做了处理为将当前节点赋值为下一个节点值,然后山出下一个节点

13.1.2.2 双向链表

插入:

删除:

13.1.3 顺序存储与链式存储对比

13.2:栈和队列

13.3:串

1.串的定义:

        串是仅由字符构成的有限序列,是一种线性表。一般记为S=“abcdef”,其中,S是串名,单引号括起来的字符序列是串值。

2.串的几个基本概念
        (1)空串与空格串
        空串:长度为零,不包含任何字符。
        空格串:由一个或多个空格组成的串。虽然空格是一个空白字符,但它也是一个字符,在计算串长度时要将其计算在内。
        (2)子串与子序列
        子串:由串中任意长度的连续字符构成的序列称为子串。含有子串的串称为主串子串在主串中的位置是指子串首次出现时,该子串的第一个字符在主串中的位置。空串是任意串的子串。
        子序列:一个串的“子序列”(subsequence)是将这个串中的一些字符提取出来得到一个新串,并且不改变它们的相对位置关系。
        (3)串比较与串相等
        串比较:两个串比较大小时以字符的ASCII码值(或其他字符编码集合)作为依据。实质上,比较操作从两个的第一个字符开始进行,字符的码值大者所在的串为大;若其中一个串先结束,则以串长较大者为大。
        串相等:指两个串长度相等且对应序号的字符也相同。

3、串的基本操作:
        (1)赋值操作StrAssign(s,t):将串s的值赋给串t。
        (2)连接操作Concat(s,t):将串t接续在串s的尾部,形成一个新的串。

        (3)求串长StrLength(s):返回串s的长度。
        (4)串比较StrCompare(s,t):比较两个串的大小。返回值-1、0和1分别表示s=t和s>t三种情况。s<t.
        (5)求子串SubString(s,start,len):返回串S中从start开始的、长度为len的字符序列。

4、串的存储
        (1)顺序存储
        (2)链式存储

        模式匹配:子串的定位操作通常称为串的模式匹配。(子串也称为模式串)
        朴素的模式匹配算法(布鲁特-福斯算法):其基本思想是从主串的第一个字符起与模式串的第一个字符比较,若相等,则继续逐一对字符进行后续的比较,否则从主串第二个字符起与模式串的第一个字符重新比较,直到模式串中每个字符依次与主串中一个连续的字符序列相等时为止,此时称为匹配成功。如果不能在主串中找到与模式串相同的子串,则匹配失败。
        改进的模式匹配算法(KMP算法):
        其改进之处在于-每当匹配过程中出现相比较的字符不相等时,不需要回退到主串的字符位置指针,而是利用已经得到的“部分匹配”结果将模式串向右“滑动”尽可能远的距离再继续进行比较。
        在KMP算法中,依据模式串的next函数值实现子串的滑动。若令next[i]=k,则next[]表示当模式串中的p;与主串中相应字符不相等时,令模式串的pnexu与主串的相应字符进行比较。(j=next[j])next函数的定义如下: 

        KMP是进行字符串模式匹配运算效率较高的算法。根据对 next 函数的定义,模式串前两个字符的 next 值为 0、1。
        对于第3 个字符 “a”,,其在模式串中的前缀为“ab”,从该子串找不出前缀和后缀相同的部分,因此,根据定义,该位置字符的next 值为 1。
        对于第4个字符“a”其在模式串中的前缀为“ aba”:音量:8%1只有长度为1的前缀“a” 和后缀“a”相同,根据定义,该位置字符的 next 值为 2。
        对于第5个字符 “a”其在模式串中的前缀为“abaa0”,该子串只有长度为 1的前缀“a” 和后缀相同,根据定义,该位置字符的 next 值为 2。
        综上可得,模式串“abaac”的 next 函数值为 01122.

一、对于公式

        1、由(1)式,当j=1时,next[1]=0;

        2、当j=1时,由(2)式,max{k|13、取值范围,j、k都为正整数,且1<=j<=5【可根据下面的具体过程理解公式】二、本题计算如下:2、1),电( nety,.lplp2Lpk1'='PIp2Lp1'p1,为第一个字母a;'pik+1pj-k+2Lpj-1'='p2p3Lp2'=p2,为第二个字母b,a!=b,此时,找不到k不满足条件,由(3)式,next[3]=1.

        4、j=4,满足1(1)当k=2,'plp2Lpk-1'='p1p2Lp1'=p1,为第一个字母a,'pj-k+lpjk+2Lpj-1'='p3p4Lp3'=p3,为第三个字母a,满足'p1p2Lpk-1'='pj-k+lpj-k+2Lpj-1'。(2)当k=3,'p1p2Lpk-1'='p1p2Lp2'=p1p2,为第一二字母ab,'pj-k+lpj-k+2Lpj1'='p2p3Lp3'=p2p3,为第二三个字母ba,不满足'p1p2Lpk-1'='pj-k+lpj-k+2Lpj-1'。综上可得,当j-4时,满足条件的最大k值为2,next[4]=2。

        5、j=5,满足1(1)当k=2,'p1lp2Lpk-1'='plp2Lp1'=p1,为第一个字母a,'pj-k+lpjk+2Lpj-1'='p4p5Lp4'=p4,为第四个字母a,满足'plp2Lpk-1'='pj-k+lpj-k+2Lpj-1'。(2)当k=3,'p1p2Lpk-1'='p1p2Lp2'=p1p2,为第一二字母ab,'pj-k+lpj-k+2Lpj1'='p3p4Lp4'=p3p4,为第三四个字母aa,不满足'p1p2Lpk-1'='pj-k+lpj-k+2Lpj-1'。(3)当k=4,'p1p2Lpk-1'='p1p2Lp3'=p1p2p3,为第一二三字母aba,'pj-k+lpj-k+2Lpj1'='p2p3Lp4'=p2p3p4,为第二三四个字母baa,不满足'p1p2Lpk-1'='pj-k+lpj-k+2Lpj-1综上可得,当j=5时,满足条件的最大k值为2,next[5]=2。根据上面的分析过程,可以得出next0函数值为01122.

相关文章:

13.数据结构(软考)

13.数据结构&#xff08;软考&#xff09; 13.1:线性表 13.1.1 顺序表 顺序存储方式:数组的内存是连续分配的并且是静态分配的&#xff0c;即在使用数组之前需要分配固定大小的空间。 时间复杂度&#xff1a; 读&#xff1a;O(1) 查询&#xff1a;1&#xff0c;(n1)/2&#x…...

开发环境搭建-完善登录功能

一.完善登录功能 我们修改密码为md5中的格式&#xff0c;那么就需要修改数据库中的密码和将从前端获取到的密码转化成md5格式&#xff0c;然后进行比对。比对成功则登录成功&#xff0c;失败则禁止登录。 二.md5格式 使用DigestUtils工具类进行md5加密&#xff0c;调用md4Dig…...

HAL库,配置adc基本流程

1. 初始化阶段---cubemx (1) GPIO初始化 函数&#xff1a;HAL_GPIO_Init() 作用&#xff1a;配置ADC引脚为模拟输入模式。 代码示例&#xff1a; // 使能GPIOA时钟 __HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA1为模拟输入 GPIO_InitTypeDef GPIO_InitStruct {0}; GPIO_InitStr…...

DeepSeek爆火催生培训热潮,是机遇还是陷阱?

DeepSeek 掀起的学习风暴 最近&#xff0c;DeepSeek 以迅猛之势闯入大众视野&#xff0c;在国内引发了一场学习狂潮。它的出现&#xff0c;就像是在平静的湖面投入了一颗巨石&#xff0c;激起层层涟漪。 在各大社交平台上&#xff0c;与 DeepSeek 相关的话题讨论热度居高不下&…...

Apache Httpd 多后缀解析

目录 1.原因 2.环境 3.复现 4.防御 1.Apache Httpd 多后缀解析原因 Apache HTTP Server 在处理文件请求时&#xff0c;通常会根据文件的后缀来确定如何处理该文件。例如&#xff0c;.php文件会被交给 PHP 解释器处理&#xff0c;而.html文件则直接作为静态文件返回。 然而…...

备赛蓝桥杯之第十五届职业院校组省赛第五题:悠然画境

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_modules

定义在 objs\ngx_modules.c #include <ngx_config.h> #include <ngx_core.h>extern ngx_module_t ngx_core_module; extern ngx_module_t ngx_errlog_module; extern ngx_module_t ngx_conf_module; extern ngx_module_t ngx_openssl_module; extern ngx_modul…...

css错峰布局/瀑布流样式(类似于快手样式)

当样式一侧比较高的时候会自动换行&#xff0c;尽量保持高度大概一致&#xff0c; 例&#xff1a; 一侧元素为5&#xff0c;另一侧元素为6 当为5的一侧过于高的时候&#xff0c;可能会变为4/7分部dom节点 如果不需要这样的话删除样式 flex-flow:column wrap; 设置父级dom样…...

【并发编程】聊聊定时任务ScheduledThreadPool的实现原理和源码解析

ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池&#xff0c;主要有四种方式&#xff0c;具体可以看代码&#xff0c; 这里主要描述下 scheduleAtFixedRate &#xff1a; 除了第一次执行的时间&#xff0c;后面任务执行的时间 为 time MAX(任务执行时…...

【虚拟化】Docker Desktop 架构简介

在阅读前您需要了解 docker 架构&#xff1a;Docker architecture WSL 技术&#xff1a;什么是 WSL 2 1.Hyper-V backend 我们知道&#xff0c;Docker Desktop 最开始的架构的后端是采用的 Hyper-V。 Docker daemon (dockerd) 运行在一个 Linux distro (LinuxKit build) 中&…...

DeepSeek 医疗大模型微调实战讨论版(第一部分)

DeepSeek医疗大模型微调实战指南第一部分 DeepSeek 作为一款具有独特优势的大模型,在医疗领域展现出了巨大的应用潜力。它采用了先进的混合专家架构(MoE),能够根据输入数据的特性选择性激活部分专家,避免了不必要的计算,极大地提高了计算效率和模型精度 。这种架构使得 …...

c++实现最大公因数和最小公倍数

最大公因数和最小公倍数的介绍 读这篇文章&#xff0c;请你先对最大公因数以及最小公倍数进行了解&#xff1a; 最大公因数&#xff08;英文名&#xff1a;gcd&#xff09; 定义&#xff1a;最大公因数&#xff0c;也称最大公约数&#xff0c;指两个或多个整数共有约数&…...

知识库Dify和cherry无法解析影印pdf word解决方案

近期收到大量读者反馈&#xff1a;上传pdf/图文PDF到Dify、Cherry Studio等知识库时&#xff0c;普遍存在格式错乱、图片丢失、表格失效三大痛点。 在试用的几款知识库中除了ragflow具备图片解析的能力外&#xff0c;其他的都只能解析文本。 如果想要解析扫描件&#xff0c…...

【记录一下学习】Embedding 与向量数据库

一、向量数据库 向量数据库&#xff08;Vector Database&#xff09;&#xff0c;也叫矢量数据库&#xff0c;主要用来存储和处理向量数据。 在数学中&#xff0c;向量是有大小和方向的量&#xff0c;可以使用带箭头的线段表示&#xff0c;箭头指向即为向量的方向&#xff0c…...

【第21节】C++设计模式(行为模式)-Chain of Responsibility(责任链)模式

一、问题背景 在 VC/MFC 开发中&#xff0c;消息处理机制是核心部分之一。VC 是基于消息和事件驱动的框架&#xff0c;消息的处理流程通常是通过链式传递的方式进行的。例如&#xff0c;一个 WM_COMMAND 消息的处理流程可能如下&#xff1a; &#xff08;1&#xff09;MDI 主窗…...

createrepo centos通过nginx搭建本地源

yum update 先安装一个nginx。 安装Nginx yum install gcc gcc-c pcre pcre-devel openssl openssl-devel libtool zlib zlib-devel -y cd /usr/local/src wget http://nginx.org/download/nginx-1.22.0.tar.gz tar -zxvf nginx-1.22.0.tar.gz cd nginx-1.22.0 ./configu…...

在 Docker 中搭建GBase 8s主备集群环境

本文介绍了如何在同一台机器上使用 Docker 容器搭建GBase 8s主备集群环境。 拉取镜像 拉取GBase 8s的最新镜像 docker pull liaosnet/gbase8s或者docker pull liaosnet/gbase8s:v8.8_3513x25_csdk_x64注&#xff1a;在tag为v8.8_3513x25_csdk_x64及之后的版本中&#xff0c;…...

【MySQL-数据类型】数据类型分类+数值类型+文本、二进制类型+String类型

一、数据类型分类 二、数值类型 1.bit类型 测试环境ubuntu 基本语法&#xff1a; bit[(M)]&#xff1a;位字段类型&#xff0c;M表示每个值的位数&#xff0c;范围从1&#xff5e;64&#xff1b;如果M被忽略&#xff0c;默认为1举例&#xff1a; create table testBit(id i…...

小谈java内存马

基础知识 &#xff08;代码功底不好&#xff0c;就找ai优化了一下&#xff09; Java内存马是一种利用Java虚拟机&#xff08;JVM&#xff09;动态特性&#xff08;如类加载机制、反射技术等&#xff09;在内存中注入恶意代码的攻击手段。它不需要在磁盘上写入文件&#xff0c…...

简单的二元语言模型bigram实现

内容总结归纳自视频&#xff1a;【珍藏】从头开始用代码构建GPT - 大神Andrej Karpathy 的“神经网络从Zero到Hero 系列”之七_哔哩哔哩_bilibili 项目&#xff1a;https://github.com/karpathy/ng-video-lecture Bigram模型是基于当前Token预测下一个Token的模型。例如&#x…...

【清华大学】实用DeepSeek赋能家庭教育 56页PDF文档完整版

清华大学-56页&#xff1a;实用DeepSeek赋能家庭教育.pdf https://pan.baidu.com/s/1BUweVDeG2M8-t0QaIs3LHQ?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/8a9473493bb0 《实用DeepSeek赋能家庭教育》基于清华大学研究成果&#xff0c;系统阐述了DeepSeek人工智能技…...

黑洞如何阻止光子逃逸

虽然涉及广义相对论&#xff0c;但广义相对论说的是大质量物体对周围空间的影响&#xff0c;而不是说周围空间和空间中的光子之间的关系。也就是说&#xff0c;若讨论光子逃逸问题&#xff0c;则不必限定于大质量的前提&#xff0c;也就是说&#xff0c;若质量周围被扭曲的空间…...

1.4 单元测试与热部署

本次实战实现Spring Boot的单元测试与热部署功能。单元测试方面&#xff0c;通过JUnit和Mockito等工具&#xff0c;结合SpringBootTest注解&#xff0c;可以模拟真实环境对应用组件进行独立测试&#xff0c;验证逻辑正确性&#xff0c;提升代码质量。具体演示了HelloWorld01和H…...

window系统中的start命令详解

start 是 Windows 系统中用于启动新进程或打开新窗口来运行指定程序或命令的命令。以下是对 start 命令参数的详细解释&#xff1a; 基本语法 start ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENO…...

AI编程工具节选

1、文心快码 百度基于文心大模型推出的一款智能编码助手&#xff0c; 官网地址&#xff1a;文心快码(Baidu Comate)更懂你的智能代码助手 2、通义灵码 阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c; 官网地址&#xff1a;通义灵码_你的智能编码助手-阿里云 …...

正则表达式,idea,插件anyrule

​​​​package lx;import java.util.regex.Pattern;public class lxx {public static void main(String[] args) {//正则表达式//写一个电话号码的正则表达式String regex "1[3-9]\\d{9}";//第一个数字是1&#xff0c;第二个数字是3-9&#xff0c;后面跟着9个数字…...

原生iOS集成react-native (react-native 0.65+)

由于官方文档比较老&#xff0c;很多配置都不能用&#xff0c;集成的时候遇到很多坑&#xff0c;简单的整理一下 时间节点:2021年9月1日 本文主要提供一些配置信息以及错误信息解决方案&#xff0c;具体步骤可以参照官方文档 原版文档&#xff1a;https://reactnative.dev/docs…...

java错题总结

本篇文章用来记录学习javaSE以来的错题 解答&#xff1a;重载要求俩个方法的名字相同&#xff0c;但参数的类型或者个数不同&#xff0c;但是不要求返回类型相同&#xff0c;所以A正确。 重写还需要要求返回类型相同&#xff08;呈现父子类关系也可以&#xff0c;但是属于特例&…...

【商城实战(10)】解锁商品信息录入与展示的技术密码

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

2025年主流原型工具测评:墨刀、Axure、Figma、Sketch

2025年主流原型工具测评&#xff1a;墨刀、Axure、Figma、Sketch 要说2025年国内产品经理使用的主流原型设计工具&#xff0c;当然是墨刀、Axure、Figma和Sketch了&#xff0c;但是很多刚入行的产品经理不了解自己适合哪些工具&#xff0c;本文将从核心优势、局限短板、协作能…...