发布时间:2026/7/23 23:03:05
数据结构(串) 串的定义串即字符串String是由零个或多个字符组成的有限序列。一般记为S′a1a2⋯⋯an′(n≥0)S a_1a_2\cdots\cdots a_n \quad (n \ge 0)S′a1​a2​⋯⋯an′​(n≥0)其中SSS是串名单引号括起来的字符序列是串的值aia_iai​可以是字母、数字或其他字符串中字符的个数nnn称为串的长度。n0n0n0时的串称为空串用∅\emptyset∅表示。子串串中任意个连续的字符组成的子序列。主串包含子串的串。字符在主串中的位置字符在串中的序号[第一次出现的位置。字符集字符的集合yf(x)y f(x)yf(x)字符集函数定义域编码函数映射规则 fy对应的二进制数基本操作串是一种特殊的线性表数据元素之间呈线性关系a1—a2—a3—a4—a5a_1—a_2—a_3—a_4—a_5a1​—a2​—a3​—a4​—a5​有啥不一样~~串的数据对象限定为字符集如中文字符、英文字符、数字字符、标点字符等串的基本操作如增删改查等通常以子串为操作对象#定义一个串顺序存储静态数组#defineMAXLEN255;typedefstruct{charch[MAXLEN];intlength;}SString;顺序存储动态数组-- 堆动态分配typedefstruct{char*ch;intlength;}HString;HString S;S.ch(char*)malloc(MAXLEN*sizeof(char));//用完要手动freeS.length0;方案二的ch只能存放0~255方案四的int就多的很喽链式存储每个节点存放单个字符** 存储密度低**typedefstructStringNode{charch;//每个节点存放1个字符structStringNode*next;}StringNode,*String;每个节点存多个字符存储密度高typedefstructStringNode{charch[4];//每个节点存多个字符structStringNode*next;}StringNode,*String;#StrAssign (T,chars)赋值操作。把串 T 赋值为 chars。#StrCopy (T,S)复制操作。由串 S 复制得到串 T。#StrEmpty (S)判空操作。若 S 为空串则返回 TRUE否则返回 FALSE。#StrLength (S)求串长。返回串 S 的元素个数。#ClearString (S)清空操作。将 S 清为空串。#DestroyString (S)销毁串。将串 S 销毁回收存储空间。#Concat (T,S1,S2)串联接。用 T 返回由 S1 和 S2 联接而成的新串#SubString(Sub,S,pos,len)求子串。用Sub返回串S的第pos个字符起长度为len的子串。boolSubString(SStringSub,SString S,intpos,intlen){if(poslen-1S.length)//字串范围越界returnfalse;for(intipos;iposlen;i)Sub.ch[i-pos1]S.ch[i];Sub.lengthlen;returntrue;}#Index(S,T)定位操作。若主串S中存在与串T值相同的子串则返回它在主串S中第一次出现的位置否则函数值为0。intIndex(SString S,SString T){inti1,nstrLength(S),mStrLength(T);SString sub;while(in-m1){SubString(sub,S,i,m);if(StrCompare(sub,T)!0)i;elsereturni;}return0;}#StrCompare(S,T)比较操作。若ST则返回值0若ST则返回值0若ST则返回值0。//比较操作若ST,则返回值0;相等返回0;若ST,则返回值0intStrCompare(SString S,SString T){for(inti1;iS.lengthiT.length;i){if(S.ch[i]!T.ch[i])returnS.ch[i]-T.ch[i];}//扫描过所有字符都相同则长度长的串更大returnS.length-T.length;}

相关新闻

2026/7/23 23:03:05

3D地图展示vue+three.js

公司项目中刚好使用了3d地图用以大屏的展示,用AI写了一个小demo随手记录一下。 git地址:gitee 主要三方库使用如下: threejs3D 前端框架three.interactive点击事件库gsap动画库d3-geoD3 的扩展库,提供了多种地理投影和路径生成器…

2026/7/23 23:03:05

多元线性回归

文章目录前言1. 多元线性回归算法1.1 定义和特征向量化1.2 多元线性回归的梯度下降1.3 梯度下降的替代方案:正规方程法2. 学习曲线3. 特征缩放4. 特征工程前言 本章主要围绕多元线性回归,介绍了向量化,学习率、特征缩放、特征工程等基础知识…

2026/7/24 0:38:13

3本SCIE被剔除,7月份WoS期刊目录更新!

科睿唯安每个月都会对SCIE、ESCI、SSCI和AHCI期刊目录进行更新,每次更新可能会涉及到新增、剔除和更名三种情况。2026年7月20日,官方发布了2026年最新的SCIE、ESCI、SSCI和AHCI期刊目录。目前共有SCIE期刊9427本、ESCI期刊9382本、SSCI期刊3538本、AHCI期…

2026/7/24 0:38:13

零信任落地难?六步框架打通从规划到持续运营全流程

面对日益复杂的网络攻击面,传统的安全架构已独木难支。《零信任安全架构实践指南:以零信任重构数字信任》一书直击企业安全建设的痛点与难点,带你系统掌握零信任架构从理念到实施的全流程。这些方法经过多家企业验证,一旦掌握即可…

2026/7/24 0:38:13

Mybatis15-Mapper接口的代理+MappedStatement

一、Mapper接口的代理对象的意义第一步:没有Mapper接口时,我们怎么写代码?在MyBatis早期(或者说如果你不用Mapper接口),你的代码长这样:// 1. 拿到SqlSession SqlSession session sqlSessionFa…

2026/7/24 0:33:12

信息系统管理工程师-信息技术发展之计算机硬件与网络全解析

一、引言信息技术发展是软考中级信息系统管理工程师考试的基础模块,在上午客观题中占比约 15%-20%,其中计算机硬件、计算机软件、计算机网络是核心考查内容。本模块知识起源于 1946 年第一台通用计算机 ENIAC 的诞生,历经 70 余年演进&#x…

2026/7/23 12:54:51

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/24 0:03:10

不同品牌斜齿行星减速机如何替换?以PX与PAG系列为例

不同品牌斜齿行星减速机如何替换?以 PX 与 PAG 系列为例 一、系列对应不等于型号直接互换 PX 与 PAG 都属于斜齿、方法兰、输出轴式精密行星减速机,结构形式和应用方向具有对应关系。 原设备使用PX系列时,可以优先从PAG系列中寻找替换型号。但…

2026/7/24 0:03:10

jdk8 把list 扁平化成String 多个以逗号分隔

在 JDK 8 中&#xff0c;将 List 扁平化为以逗号分隔的 String&#xff0c;有几种非常简洁且高效的方法。&#x1f680; 推荐方案&#xff1a;使用 Collectors.joining()这是最标准的 Java 8 写法&#xff0c;适用于 List<String>。javaimport java.util.stream.Collecto…

2026/7/24 0:03:10

java 两个 long id 怎么合并成一个long id 并且不重复

“把两个 Long ID 合并成一个唯一的 Long ID&#xff0c;且保证不重复”这个需求&#xff0c;在 Java 里直接做数学上的“完美合并”是不可能的。因为两个 Long&#xff08;各 64 位&#xff09;要合并成一个 Long&#xff08;64 位&#xff09;&#xff0c;在信息论上是有损压…

2026/7/23 23:42:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…