【串的相关概念】

news2024/9/21 5:41:18

1.前情回顾:

在这里插入图片描述

2.串的定义

在这里插入图片描述
注意这里的字符是任意字符:包括特殊字符和空格

在这里插入图片描述

2.1串的相关术语

在这里插入图片描述

2.2分析如下:

  • 子串与主串 可以类比 子集与集合的关系
    空串也是子串的一种

在这里插入图片描述

  • 注意空格串空串的区别

  • 位置是从1开始设定的(第一个位置开始)

  • 案例剖析
    在这里插入图片描述
    在这里插入图片描述

2.3串相等

在这里插入图片描述
在这里插入图片描述
注意
在这里插入图片描述

3. 串的类型定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1.这里注意:index:即字符串的定位操作十分重要
    (若主串S存在与串T值相同的子串,则返回它在主串S中第一次出现的位置

4.串的 顺序存储 与 链式存储

4.1串的顺序存储

一般分为静态数组存储,动态数组存储;两者都可以,但静态数组更加常见,所以本篇着重介绍静态数组的存储方式。

4.1.1三种顺序存储的方法:
  • 由于一个char类型8bit,如果使用一个char变量来表示数组长度,则只能表示0~256这个区间
    在这里插入图片描述
    方案四较为常用
    代码如下:
 //1.串的顺序存储:
#define  MAXSIZE 255//预定义最大串长为255

//1.串类型定义(静态数组)
typedef struct 
{
	char ch[MAXSIZE+1];//每个空间存储一个字符
	//这里加1的目的是,串的有效元素要从下标1开始存起,方便管理,长度最大仍然为255
	int length;//串的实际长度
}sstring;
//sstring:结构体别名,用来定义串

4.2串的链式存储

  • 第一种方案:每个结点存1个字符,不建议使用,存储密度太低
//2.串的链式存储(每个结点存1个字符)
//存储密度低,不建议使用
typedef struct StringNode
{
	char ch;//每个数据域存储一个字符
	struct StringNode * next;//串的指针域
}stringNode,*string;
//stringNode:结构体别名,用来定义串结点
//string:结构体指针别名,用来定义串结点指针

在这里插入图片描述

  • 优化后的方案:块链结构,即一个数据域可以存储多个字符,其中块的大小可以自己定义,提高了存储密度
//2.串的链式存储(每个结点存多个字符)
#define CHUNKSIZE 80//块的大小可由用户定义
//<1>串的结点结构定义
typedef struct Chunk 
{
	char ch[CHUNKSIZE];//块中存储的字符数组
	struct Chunk* next;
}Chunk;

//<2>串的定义
typedef struct 
{ 
	Chunk* head, * tail; //串的头指针和尾指针
	int curlen; //串的当前长度
}LString; // 字符串的块链结构
//LString:用来定义一个整串

由于80个空间的块链不好表示,故以四个char来表示:
在这里插入图片描述

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

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

相关文章

【java入门】关键字、标识符与变量初识

&#x1f680; 个人简介&#xff1a;某大型国企资深软件开发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…

Java 入门指南:Java 并发编程 —— 并发容器 PriorityBlockingQueue

BlockingQueue BlockingQueue 是Java并发包&#xff08;java.util.concurrent&#xff09;中提供的一个阻塞队列接口&#xff0c;它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则&#xff0c;支持多线程环境并发访问&#xff0c;提供了阻塞读取和写入的操作&a…

「C++」类和对象(2)

欢迎大家来到小鸥的类和对象第二篇博客~ 目录 类的默认成员函数 构造函数 构造函数的特点&#xff1a; 析构函数 析构函数的特点&#xff1a; 拷贝构造函数 拷贝构造的特点&#xff1a; 结语&#xff1a; 本篇会着重讲解类和对象中的难点&#xff1a;类的默认成员函数 …

Ubuntu环境的MySql下载安装

下载压缩包 此文章下载的mysql版本位5.7.29 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar解压缩 sudo tar -xvf mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar命令解释 -x&#xff1a;…

鸿蒙Next-拉起支付宝的三种方式——教程

鸿蒙Next-拉起支付宝的三种方式——教程 鸿蒙Next系统即将上线&#xff0c;应用市场逐渐丰富、很多APP都准备接入支付宝做支付功能&#xff0c;目前来说有三种方式拉起支付宝&#xff1a;通过支付宝SDK拉起、使用OpenLink拉起、传入支付宝包名使用startAbility拉起。以上的三种…

走心机做不锈钢哪个牌子好

不锈钢是现代生活中不可或缺的材料&#xff0c;它广泛应用于厨房用具、家具、建筑等领域。在市场上&#xff0c;有许多不锈钢需要加工零件供消费者选择&#xff0c;那么在选择不锈钢加工零件时制品时&#xff0c;应该如何选择数控走心机&#xff0c;找到最好的品牌呢&#xff1…

CodeSys中动态切换3D模型

文章目录 需求研究结果 需求 在前面的【CodeSys开发3d机械臂显示控件】中&#xff0c;我们已经实现了一个可以显示3d模型的控件。但是这个控件是和使用的3d模型绑定死的&#xff0c;在安装这个控件时就已经将模型文件于控件一起安装到codesys中。 假如我想在不同的工程中&…

Numpy中type()、ndim、shape、size、dtype、astype的用法

目录 numpy基础介绍示例分析及总结&#xff1a;itemsize、nbytes函数 numpy基础介绍 Numpy 补充了Python语言所欠缺的数值计算能力,是其它数据分析及机器学习库的底层库。因其完全标准C语言实现&#xff0c;运行效率充分优化。最重要一点是开源免费。numpy的核心是矩阵&#x…

思维导图怎么画好看又简单?5个软件帮助你快速进行思维导图绘制

思维导图怎么画好看又简单&#xff1f;5个软件帮助你快速进行思维导图绘制 思维导图是一种有效的思维整理和展示工具&#xff0c;可以帮助你将复杂的想法进行可视化&#xff0c;提升工作和学习效率。为了让思维导图既好看又简单&#xff0c;选择合适的软件能够大大提高绘制效率…

UE中Camera Clip截面修改

UE中Camera无法修改远截面&#xff08;FarClipingPlane)&#xff0c;只可修改近截面&#xff08;NearClipingPlane&#xff09;&#xff1a; 至于为什么无法修改远截面&#xff0c;看下代码&#xff0c;尝试继承UE的CameraComponent打印出相机投影矩阵&#xff1a; #include …

python编程知识(实现数据加密和解密)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

在模板中使用 Django 会话

在 Django 中使用会话&#xff08;session&#xff09;可以让你在用户访问网站的过程中存储和访问临时数据。我们可以利用会话在速度计算器的例子中存储和显示上次计算的结果。 1、问题背景 在 Django 中&#xff0c;可以使用会话来存储用户数据。在某些情况下&#xff0c;我们…

双绞线如何抑制传导干扰

一&#xff0e;案例简介 产品去做CE认证时&#xff0c;被告知传导抗扰未通过&#xff0c;网络会断连。 剖开网线外皮&#xff0c;发现内部是散装的&#xff0c;非双绞线。因此换成双绞线网线&#xff0c;复测&#xff0c;传导抗扰通过了。 图1 非双绞线和双绞线示意图 为什么…

经销商数据对接方案:借助轻易云数据集成平台实现高效互联

在现在很多品牌方的实际需求中&#xff0c;品牌商与经销商之间的渠道博弈日益激烈。品牌商渴望掌握经销商的销量和库存数据&#xff0c;以便更好地规划生产和库存&#xff0c;提升品牌影响力&#xff1b;经销商则期望在避免库存积压的同时抢占市场&#xff0c;加速资金周转以获…

活动预告|“AI+Security”系列第3期:AI安全智能体,重塑安全团队工作范式

由安全极客、Wisemodel社区、InForSec网络安全研究国际学术论坛和海升集团联合主办的 “AISecurity”系列第3期&#xff1a; AI 安全智能体&#xff0c;重塑安全团队工作范式 线下活动 将于2024年9月11日下午14:00 在中关村智造大街G座路演厅 正式举行 欢迎扫描海报中二…

Javaweb(前端)

目录 Web开发 Web前端 HTMLCSS 盒子模型 JavaScript js引入方式 js基础语法 js函数 js对象&#xff08;JSONBOMDOM&#xff09; js事件监听 Vue ​编辑Vue快速入门 Vue常用指令 Vue生命周期 Ajax 原生Ajax Axios YApi&#xff08;应用网页&#xff09; 前端工程…

打造一流的研发型企业--- 金发科技研发驱动力初探

2006年3月29日&#xff0c;国家发改委副主任欧新黔亲自为金发科技颁发了“中国改性塑料行业第一位”、“中国合成材料制造业十强”、“中国石油化工全行业百强”三块铜牌证书&#xff0c;金发科技终于成为名符其实的行业“老大”。公司产品销售额增长迅速&#xff0c; 2006年完…

Java健康养老智慧相伴养老护理小程序系统源码代办陪诊陪护更安心

健康养老&#xff0c;智慧相伴 —— 养老护理小程序&#xff0c;代办陪诊陪护更安心 &#x1f308;【开篇&#xff1a;智慧养老&#xff0c;新时代的温馨守护】&#x1f308; 在这个快节奏的时代&#xff0c;我们总希望能给予家人更多的关爱与陪伴&#xff0c;尤其是家中的长…

【AIGC赋能】短视频创作新纪元:一键生成,爆款不再难!

文章目录 一、AI技术的深度融入&#xff1a;从辅助到主导二、实际应用场景&#xff1a;覆盖创作全流程三、展望未来&#xff1a;AI短视频创作的无限可能 《AI短视频生成与剪辑实战108招&#xff1a;ChatGPT剪映》编辑推荐内容简介作者简介目录前言/序言内页插图 在数字化浪潮的…

IP地址是怎么实现HTTPS访问的?

首先&#xff0c;需要明确的是&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff09;是互联网上设备&#xff08;如服务器、路由器等&#xff09;的唯一标识符&#xff0c;它允许数据包在网络中正确地路由和传输。然而&#xff0c;IP地址本身并不直接支持HTTPS…