13.数据结构(软考)

news2025/4/22 1:47:23

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.

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

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

相关文章

拉拉扯扯adfda

read -p "请输入一个成绩&#xff1a;" sorce if [ "$sorce" -ge 90 -a "$sorce" -le 100 ] thenecho A elif [ "$sorce" -ge 80 -a "$sorce" -lt 90 ] thenecho B elif [ "$sorce" -ge 70 -a "$sorce"…

【计算机网络】TCP

1.基本概念及报文格式 基本概念&#xff1a; TCP的中文全称为传输控制协议&#xff08;Transmission Control Protocol&#xff09;&#xff0c;是一种可靠的&#xff0c;面向连接的&#xff0c;基于字节流的传输层通信协议。 报文格式&#xff1a; 序号 &#xff1a;占32⽐…

关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题

如果是jsp文件就在首行加 “<% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %>” 如果是html文件 在head标签加入&#xff1a; <meta charset"UTF-8"> 以jsp为例子&#xff0c;我们…

pytest结合allure

Allure 一、文档二、指令三、装饰器3.1 allure.step装饰器3.2 allure.description装饰器3.3 allure.title装饰器3.4 allure.link、allure.issue 和 allure.testcase装饰器3.5 allure.epic、allure.feature 和 allure.story装饰器3.6 allure.severity装饰器 一、文档 allure文档…

vue2升vue3,uniapp兼容鸿蒙app踩坑记录

前提&#xff1a;最近鸿蒙势头很好&#xff0c;公司的 uniapp vue2 项目&#xff0c;要兼容鸿蒙app。就开始了我的uniapp转鸿蒙踩坑之旅&#xff0c;请看下文&#xff08;注意下文都是在uniapp开发基础上&#xff09; 1. 首先鸿蒙开发只支持Vue3&#xff0c;不支持Vue2、不支持…

DeepSeek × 豆包深度整合指南:工作流全解析

DeepSeek 豆包深度整合指南&#xff1a;工作流全解析 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 DeepSeek 豆包深度整合指南&#xff1a;工…

海思Hi3516DV300交叉编译opencv

OpenCV是一个开源的跨平台计算机视觉库&#xff0c;支持C、Python等多种语言&#xff0c;适用于图像处理、目标检测、机器学习等任务。其核心由C编写&#xff0c;高效轻量&#xff0c;提供实时视觉处理功能&#xff0c;广泛应用于工业自动化、医疗影像等领域。 1 环境准备 1…

[FE] React 初窥门径(五):React 组件的加载过程(commit 阶段)

1. 回顾 前一篇文章我们看到&#xff0c;ReactDOM.render 总共包含这些步骤&#xff0c; 然后介绍了 performSyncWorkOnRoot 做的事情&#xff0c;它主要做了两件事&#xff0c; renderRootSync 可称之为 render 阶段&#xff1a;创建了一颗 Fiber Tree&#xff08;包含 html …

java环境部署

java环境部署 一、准备工作 jrejdkeclipse jdk下载&#xff1a;21和1.8-----官网&#xff1a;Oracle&#xff1a;Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装&#xff1a;IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…

100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)

文章目录 一、curl是什么&#xff1f;二、爬虫在线小工具&#xff08;牛逼puls&#xff09;三、实战操作 一、curl是什么&#xff1f; 基本概念&#xff1a;curl 支持多种协议&#xff0c;如 HTTP、HTTPS、FTP、SFTP 等&#xff0c;可用于从服务器获取数据或向服务器发送数据&a…

python-leetcode-解决智力问题

2140. 解决智力问题 - 力扣&#xff08;LeetCode&#xff09; 这道题是一个典型的 动态规划&#xff08;Dynamic Programming, DP&#xff09; 问题&#xff0c;可以使用 自底向上 的方式解决。 思路 定义状态&#xff1a; 设 dp[i] 表示从第 i 题开始&#xff0c;能获得的最高…

SpireCV荣获Gitee 最有价值开源项目称号

什么是GVP&#xff1f; GVP全称Gitee Valuable Project&#xff0c;意思为Gitee最有价值开源项目。作为GVP称号的获得者&#xff0c;SpireCV在开源社区中展现出了卓越的实力和影响力&#xff0c;为开源软件的发展和推广做出了积极的贡献。 这一荣誉不仅充分肯定了过去阿木实验…

数据结构基础(一)

文章目录 1 数据结构基础1.1 什么是程序&#xff1f;1.2 数据、数据元素、数据项、数据对象1.3 基本的逻辑结构 2 算法效率2.1 时间复杂度2.1.1 循环执行次数2.1.2 大O(n)表示法 2.2 空间复杂度 1 数据结构基础 1.1 什么是程序&#xff1f; ​ 程序 数据结构 &#xff0b; 算…

⭐算法OJ⭐N-皇后问题 II【回溯剪枝】(C++实现)N-Queens II

⭐算法OJ⭐N-皇后问题【回溯剪枝】&#xff08;C实现&#xff09;N-Queens 问题描述 The n-queens puzzle is the problem of placing n n n queens on an n n n \times n nn chessboard such that no two queens attack each other. Given an integer n, return the num…

项目管理工具 Maven

目录 1.Maven的概念 1.1​​​​​什么是Maven 1.2什么是依赖管理 1.3什么是项目构建 1.4Maven的应用场景 1.5为什么使用Maven 1.6Maven模型 2.初识Maven 2.1Maven安装 2.1.1安装准备 2.1.2Maven安装目录分析 2.1.3Maven的环境变量 2.2Maven的第一个项目 2.2.1按照约…

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器&#xff0c;可以让用户愉快的从繁琐的工作中解放出来&#xff0c;其本质是对键盘和菜单的操作序列的录制&#xff0c;并不会识别文件的内容&#xff0c;属于无差别无脑执行。 特别是对一些有规律的重复按键动作&#xff0c;…

“双碳”背景下,企业应该如何提升能源效率?

在当今竞争激烈的市场环境中&#xff0c;企业不仅需要优化成本&#xff0c;还需积极响应国家的能源政策&#xff0c;减少对环境的影响。提升工业能源效率正是实现这一双重目标的关键。中国近年来大力推进“双碳”目标&#xff08;碳达峰、碳中和&#xff09;&#xff0c;并出台…

文献学习——考虑混合储能系统选择的基于改进蜂群算法的热电联产微网多目标经济优化调度

摘要&#xff1a;在考虑混合储能系统模型选择的基础上&#xff0c;基于改进的人工蜂群算法&#xff08;ABC&#xff09;&#xff0c;建立了冷热电联产微电网经济优化的多目标调度模型。为了对以往研究中的单目标模型进行升级&#xff0c;将模型的优化目标设定为微电网的日发电调…

nnMamba:基于状态空间模型的3D生物医学图像分割、分类和地标检测

摘要 本文提出了一种基于状态空间模型&#xff08;SSMs&#xff09;的创新架构——nnMamba&#xff0c;用于解决3D生物医学图像分割、分类及地标检测任务中的长距离依赖建模难题。nnMamba结合了卷积神经网络&#xff08;CNN&#xff09;的局部特征提取能力与SSMs的全局上下文建…

安科瑞新能源充电桩解决方案:驱动绿色未来,赋能智慧能源

安科瑞顾强 引言 在“双碳”目标与新能源汽车产业高速发展的双重驱动下&#xff0c;充电基础设施正成为能源转型的核心环节。安科瑞电气股份有限公司凭借在电力监控与能效管理领域20余年的技术积淀&#xff0c;推出新一代新能源充电桩解决方案&#xff0c;以智能化、高兼容性…