数据结构与算法基础-学习-14-线性表之串

news2025/1/11 12:39:15

一、串的定义

由0-n个字符组成的有限序列。(n>=0)

二、串的相关术语

1、子串

串中任意个连续字符组成的子序列成为该串的子串。

2、主串

包含子串的串成为主串。

3、字符位置

字符在序列中的序号为该字符在串中的位置。

4、子串位置

子串第一个字符在主串中的位置。

5、空格串

一个或多个空格组成的串。和空串不同。

6、串相等

两个字符串的长度相等且每一位上的字符都相等。

7、空串

不存任何字符的序列。所有空串相等。

三、串的存储结构

1、顺序串

(1)顺序串结构体

#define SqStrSize 10

//顺序串
typedef struct SqStr
{
    char StrArray[SqStrSize];
    int SqStrLen;
}SqStr;

2、链串

(1)链串结构体

//链串
typedef struct LinkStrNode
{
    char c;
    struct LinkStrNode* NextPtr;
}LinkStrNode,*LinkStrNodePtr;

typedef struct LinkStr
{
    LinkStrNodePtr HeadPtr;
    LinkStrNodePtr TailPtr;
    int LinkStrLen;
}LinkStr;

(2)块链结构体

#define ChunkSize 10

//块链
typedef struct ChunkNode
{
    char StrArray[ChunkSize];
    struct ChunkNode* NextPtr;
}ChunkNode,*ChunkNodePtr;

typedef struct ChunkLink
{
    ChunkNodePtr HeadPtr;
    ChunkNodePtr TailPtr;
    int ChunkLinkLen;
}ChunkLink;

3、存储密度对比

存储密度公式:存储密度 = 串值所占的存储 ➗ 实际分配的存储。

例如存储100个字符:

(1)顺序串存储密度=100除以(100+4)≈ 0.96(int类型4个字节)

(2)链串存储密度 = 100除以((1+4)*100)= 0.2(一个节点有一个指针域,一个指针占4个字节)

(3)块链存储密度 = 100除以((10+4)*10)≈ 0.71(一个节点有一个指针域,一个指针占4个字节,假设一个数据域存储十个字符,一共10个节点可以存100个字符)

四、字符串匹配算法

字符串匹配算法可以参考之前写的文章《leecode-C语言实现-28. 找出字符串中第一个匹配项的下标》,里面有BF算法介绍和KMP算法具体实现以及个人理解。

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

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

相关文章

Docker----------Docker轻量级可视化工具Portainer/监控之 CAdvisor+InfluxDB+Granfana

1.是什么 Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 2 官网 官网 https://www.portainer.io/ https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 3.…

【数电基础】——时序逻辑电路

目录 1.大纲 2.时序逻辑电路的特点 3.时序逻辑电路的一般形式 4.时序逻辑电路的描述方法 5.同步时序逻辑电路 6.异步时序逻辑电路 7.同步时序逻辑电路的分析方法(上升沿触发的D触发器) 8.同步时序逻辑电路的分析方法(脉冲触发的JK触发…

Grafana邮件及告警配置

之前部署过服务器的监控组件程序,本在部署时也进行邮件及告警配置,但未进行文档整理,在这儿进行展示。之前用过Grafana的7.*的版本,在进行邮件配置还比较OK,但在配置告警时,太繁琐,还要自己去写…

Java数据结构LinkedList单链表和双链表模拟实现及相关OJ题秒AC总结知识点

本篇文章主要讲述LinkedList链表中从初识到深入相关总结,常见OJ题秒AC,望各位大佬喜欢 一、单链表 1.1链表的概念及结构 1.2无头单向非循环链表模拟实现 1.3测试模拟代码 1.4链表相关面试OJ题 1.4.1 删除链表中等于给定值 val 的所有节点 1.4.2 反转…

【H2实践】之认识 H2

一、H2 官网 H2 官网 http://www.h2database.com/html/main.html H2 是一款短小精干的 Java 内存数据库,性能强劲。 H2 的优点: 非常快的数据库引擎开源Java 编写支持标准 SQL, JDBC API内嵌和服务器模式,支持集群强大的安全特性可使用 PostgreSQL OD…

如何实现云原生?推荐的几个实用工具

云原生是一种软件开发和部署的方法,它依赖于容器、微服务和自动化运维。它能使应用更高效、可靠和可扩展,并适用于不同的云平台。 如果要更直接、更通俗地解释上述概念的话。 云的本源更准确地说是一种文化,一种潮流,它必然是云…

更新 Python 100道基础入门检测练习题【下篇】(附答案)

前言 大家早好、午好、晚好吖 ❤ ~ 爆肝更新 Python 100道基础入门练习题【篇上】 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例021:猴子偷桃 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半&#xf…

微服务一 实用篇 - 1. SpringCloud01

《微服务一 实用篇 - 1. SpringCloud01》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 1. SpringCloud01》《微服务一 实用篇 - 1. SpringCloud01》0. 微服务课程简介1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务…

1000亿数据、30W级qps如何架构?来一个天花板案例

1000亿级存储、30W级qps系统如何架构?来一个天花板案例 说在前面 在尼恩的(50)读者社群中,经常遇到一个 非常、非常高频的一个架构面试题,类似如下: 千万级数据,如何做系统架构?亿…

外网跨网远程控制内网计算机3种方案

远程控制,通俗来讲就是在自己个人电脑直接远程访问另台主机电脑桌面操作。 如何远程控制电脑?远程控制别人计算机的方案通常有两种,一种是开启电脑系统自带的远程桌面功能,如果涉及跨网内、外网互通可以同时用快解析内网映射外网&…

windows 下 安裝mysql 5.7.41 (64位) 超简单方式

文章目录1. 安装包下载2.安装步骤3. 服务卸载方式4. 配上 my.ini 常用配置1. 安装包下载 注意,截至2023年2月23日,MySQL所有版本不提供ARM芯片架构的Windows版本(8.0.12开始支持Red Hat系统的ARM版本),所以ARM架构的Windows无法安装MySQL&am…

如何批量重命名,把文件(夹)名的内容位置调整(前后移动)

首先,需要用到的这个工具: 百度 密码:qwu2 蓝奏云 密码:2r1z 情况是这样,把“中文[数字]”的名称,改为"中文 - 数字" 打开工具,切换到 文件批量复制 模块,快捷键Ctrl5 …

【同步工具类:CountDownLatch】

同步工具类:CountDownLatch介绍源码分析继承图核心方法分析await()countDown()业务场景代码实现测试结果总结介绍 Jdk原文翻译 CountDownLatch 一种同步辅助工具,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。 CountDownLatch用给定的计…

css3的重点内容

css3的重点内容 浮动 父级边框塌陷问题 浮动的清除 clear:left; //清除左侧浮动 clear:right; //清除右侧浮动 clear:both; //清除两侧浮动解决方案 增加父级元素的高度增加一个空的div,之后清除浮动通过overflow来进行相关元素的修剪给父类添加相应的伪类元素…

使用 docker 部署 MySQL 会导致数据丢失吗

2023年2月28日,今天下午电话面试 java 岗位,经过一些提问后,面试官问了一个问题,“那么你最近在关注什么方面的技术点呢?”,可能是我之前的回答不太理想,且说辞都是“不好意思,可能最…

JS逆向-百度翻译sign

前言 本文是该专栏的第36篇,后面会持续分享python爬虫干货知识,记得关注。 有粉丝留言,近期需要做个翻译功能,考虑到百度翻译语言语种比较全面,但是它的参数被逆向加密了,对于这种情况需要怎么处理呢?所以本文以它为例。 废话不多说,跟着笔者直接往下看正文详细内容。…

狂飙狂飙,一年都沉浸在狂飙中,教你们用python来实现在图片中添加日历

前言 我是小废物,才开始看狂飙,这热点还能蹭上吗 该说不说,是真的很喜欢里面的大嫂啊,现在壁纸都一直是她,大美女谁不喜欢啊 昨天还是前天刷到了她出席活动,太帅了吧 不多说,先看大美女 &am…

【面试1v1实景模拟】Redis面试官会怎么提问?本文助你面试入坑,赶快收藏吧~

笑小枫专属目录老面👴:小伙子,咱来聊聊Redis,你知道什么是Redis吗?老面👴:除了key-value类型的数据,你还知道Redis的哪几种数据结构?老面👴:你说说在什么场景下使用了R…

taobao.opensecurity.uid.get( open security uid 获取接口 )

¥免费不需用户授权 根据明文 taobao user id 换取 app的 open_uid 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, …

2023年湖北助理工程师(初级职称)怎么评?需要什么资料?启程别

2023年湖北助理工程师(初级职称)怎么评?需要什么资料?启程别 助理工程师主要是指初级工程技术人员的职务名称,他是通过相关考试和相关部门评审通过之后所获得的相应名称,想要了解职称更多相关资料可以咨询启…