数据结构(串)

发布时间:2026/11/8 3:07:17

数据结构(串) 串的定义串即字符串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/11/1 22:23:13

3D地图展示vue+three.js

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

2026/11/1 22:43:46

多元线性回归

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

2026/11/8 3:05:36

特种作业操作证涉药的真实经历:如何快速考取并上岗找工作

特种作业操作证涉药的真实经历:如何快速考取并上岗找工作 急需特种作业证才能上岗找工作,很多人在找工作时都会遇到这样的难题,尤其是从事涉药作业的岗位,比如危险化学品安全作业、烟花爆竹安全作业等,特种作业操作证是硬性门槛。我有个朋友在济源做了一…

2026/11/8 3:05:36

长沙水电工证在哪考取千万别踩坑,学历不高也能报!

长沙水电工证在哪考取千万别踩坑,学历不高也能报! 你是不是也这样?初中毕业,干了几年水电工,眼看要换证了,却听说“学历不够报不了名”,心里慌了神。别担心, 长沙水电工证在哪考取 ,今天就给你讲明白, 千万别踩坑 ,学历不高,一样能考过。…

2026/11/8 3:05:36

工地太忙根本没时间复习考试?终身的电工证上岗必备怎么搞定

工地太忙根本没时间复习考试?终身的电工证上岗必备怎么搞定 工地太忙根本没时间复习考试,你是不是也遇到过这种情况?手里攥着一个“终身的电工证”,却因为没时间复习,迟迟不敢去参加考试,生怕考不过耽误工期。别急,下面我从郑州金水区转岗从业者的角度…

2026/11/8 3:05:36

高级电工证电子版怕考不过白交培训费?良心建议来了

高级电工证电子版怕考不过白交培训费?良心建议来了 你是不是也在纠结,报名了高级电工证电子版培训,担心自己考不过,结果钱就打水漂?这事儿我见过太多了,今天就从一个真实案例出发,给你讲讲怎么避开这些坑,确保一次通过,别让培训费白花。…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑