串(数据结构)

article/2025/8/27 16:11:20

一、 串类型的定义

  串的定义

串(string)(或字符串)是由零个或多个字符组成的有序序列,一般记为

              S=”a1a2…an”   (n>=0)

其中,s是串的名,用双引号括起来的字符序列是串的值;ai (1≤i≤n)可以是字母、数字或其他字符;串中字符的数目n成为串的长度。零个字符的串称为空串(null string),它的长度为0。

串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应的称为主串。通常称字符在序列中的序号为该字符在串中的位置。子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。

例如,假设有a、b、c、d四个字符串:

           a=”BEI”        b=”JING”

           c=”BEIJING”    d=”BEI JING”

则它们的长度分别为3、4、7、8;并且a、b都是c、d的子串,a在c和d中的位置都是0,而b在c中的位置是3,在d中的位置是4;可见字符串的索引是从0开始的

称两个串相等的,当且仅当这两个串的值相等。也就是说,只有当两个字符串的长度相等,并且各个对应位置的字符都相等才相等。例如上例子中a、b、c、d都互不相等。

值得一提的是,串值必须用一对双引号括起来,但双引号本身不属于串,它的作用只是为了避免与变量名或数的常量混淆而已。另在高级语言中,如C语言中字符串中隐藏一个特殊的字符即’\0’,它的作用是标识字符串结束,因此称’\0’为字符串结束符。

 串的操作

字符串可以有丰富的操作,在日常非数值运算大量的都是字符串的操作。归纳总结可以大致分为以下操作:

赋值           strcpy(数组名、字符串);

判空           strlen()    strcmp()   

字符串比较     strcmp

求字符串长度   strlen

字符串拷贝     strcpy

字符串连接     strcat

求字符串子串(截取字符串) 

二、 串类型的表示和实现

串的表示

(1)定长顺序存储表示:类似线性表的顺序存储结构,用一组地址连续的存储单元存储字符串的字符序列。

(2)堆分配存储表示:这种存储方式特点是:仍一一组连续的存储单元存放字符串序列,但它们的存储空间是在程序执行过程中动态分配而得的。

(3)块链存储表示:和线性表的链式存储类似,也是用链表来保存字符串的值。根据串的特殊,若每个字符占一个结点太小,则采取每个结点可以存放一个也可以存放多个字符。如图所示:图a就是块链存储方式,而图b则过于浪费空间。

串的实现

首先串的存储方式不同其实现方式就是不一样的,这里我们采用第一种存储方式即定长顺序存储表示。

     #define MAX 255       //用户可在255以内定义最大串长

typedef unsigned char SString[MAX+1];     //最后以’\0’结束标识字符串结束

当如此顶以后串的各种操作就可以实现了,有一些C语言中自带的系统可完成一部分,如字符串拷贝strcpy,字符串连接strcat,字符串比较strcmp,求字符串长度strlen。也有另外一部分需要自己实现,比如截取字符串substring:

int get_next(char t[],int next[])  //计算next[j]的函数{int i=0,j=0;next[0]=0;while(i<strlen(t)){if(j==0||t[i]==t[j]){i++;j++;next[i]=j;}else{j=next[j];}}
}int index(char s[],char t[],int pos)  //子串定位函数{int i,j;int next[256];get_next(t,next); for(j=0;j<strlen(t);j++){printf("%d\t",next[j]);}i=pos;j=0;while(i<strlen(s)&&j<strlen(t)){if(j==-1||s[i]==t[j]){i++;j++;}else{j=next[j]-1;    //失配时只滑动模式串到next[j]-1的位置继续比较即可}}if(j>=strlen(t)){return i-strlen(t);}else{return -1;  //没有匹配到}
}
void main()
{char s[100]="ababcabcacbaab";char t[100]="abcac";int pos=0;printf("%d",index(s,t,pos));  //打印子串在主串的位置
}    


http://chatgpt.dhexx.cn/article/4pih37DX.shtml

相关文章

数据结构:串(String)【详解】

友情链接&#xff1a;数据结构专栏 目录 串【知识框架】一、串的定义二、串的存储结构1、定长顺序存储表示2、堆分配存储表示3、块链存储表示 三、串的基本操作四、串的模式匹配&#xff08;重点&#xff09;1、简单的模式匹配算法2、KMP算法&#xff08;1&#xff09;字符串的…

idm下载器是免费的吗?有哪些功能

对于PC用户来说&#xff0c;拥有一款好用和快速的下载工具&#xff0c;对我们来说至关重要&#xff0c;可以极大提高我们的工作效率和PC用户体验。IDM可以实现高速下载&#xff0c;其核心原理就是多线程下载&#xff0c;理论上可以达到带宽的峰值速度&#xff0c;深受用户的喜爱…

IDM下载器|Windows系统经典下载工具idm6.41|IDM如何在线视频下载工具 |下载视频教程

IDM全称Internet Download Manager,是一种将下载速度提高最多5倍的专业下载工具,支持大部分文件格式下载和基本所有的下载链接,无视网址本身下载限速,直接达到电脑该有的网速。 下载更快更可靠 下载INTERNET DOWNLOAD MANAGER(IDM下载器)开始您的极速下载旅程&#xff0c;永远…

【IDM】IDM下载器安装

下载链接 IDM_v6.41.2_Reрack.exe提取码: gj46 可能遇到的问题 1. 某些应用程序阻止了IDM集成到浏览器中 解决方法&#xff1a; 1.打开“Windows Update” 2.winr运行cmd 3.输入“services.msc” 4.找到“Windows Update”运行 5.关闭IDM&#xff0c;用管理员身份运行。…

【百度网盘下载】用工具IDM下载器

个人的一些学习资料和共享资料都是在百度网盘上&#xff0c;但是最近百度网盘的下载速度实在是太慢了。目前找到的比较好的方法是用IDM下载器。 微信公众号&#xff1a;北鼻不抠鼻 它详细介绍了这个软件的下载方式&#xff0c;还有相关配置。 重点是 绿色 嘿嘿 下载完在浏览器…

怎么在火狐浏览器中添加IDM下载器扩展?

Internet Download Manager&#xff08;简称“IDM”&#xff09;是一种将下载速度提高5倍&#xff0c;可以恢复和安排下载任务的工具。当在下载的过程中遇到连接丢失、网络问题、计算机关机或意外停电等问题&#xff0c;IDM可以全面恢复和重启中断的下载。 Internet Download M…

internet download manager(IDM下载器) 6.40

软件下载 internet download manager(IDM下载器)是一款很不错的下载工具。有了internet download manager软件&#xff0c;可以提高你下载文件的速度&#xff0c;如果您在下载文件的时候&#xff0c;突然没网了&#xff0c;您可以使用IMD下载器的续传功能非常的方便&#xff0…

idm下载器是什么软件?最新V6.41版本号Win下载工具

Internet Download Manager &#xff08;IDM&#xff09;是一种将下载速度提高多达 5 倍&#xff0c;恢复和安排下载的软件。全面的错误恢复和恢复功能将由于连接丢失&#xff0c;网络问题&#xff0c;计算机关闭或意外断电而重新启动中断的下载或中断下载。IDM下载器是一款先进…

IDM下载器插件 让浏览器不在限速

IDM下载器 可提速&#xff08;2到n倍&#xff09;的使用方法&#xff0c;让浏览器不在限速 前言 IDM 最佳的 Windows 下载工具 官方网址: http://www.internetdownloadmanager.com/. 尽管现在要用到「下载工具」的时间相比过去有所减少&#xff0c;但电脑上总要备一款以防不…

IDM下载器免费高质量的Win下载工具无使用限制

这是Windows 平台上的一款下载软件&#xff0c;它支持不同类型的浏览器&#xff0c;几乎能下载网页中所有的数据&#xff0c;还不会弹出广告。internetdownloadmanager(IDM下载器)是一款很不错的下载工具&#xff0c;很多人使用&#xff0c;这个软件好处就是免费 网上可以搜索到…

idm下载器怎么下载网页视频?如何用idm自动下载网站文件?

随着互联网的快速发展&#xff0c;越来越多的资源都可以免费下载&#xff0c;而idm下载器凭借其独特的“多线程资源嗅探”&#xff0c;能轻松下载各种网页视频&#xff0c;因此idm也一直被称为下载神器&#xff0c;那idm下载器怎么下载网页视频&#xff0c;或者自动下载网站文件…

chrome中下载文档时设置成不使用idm下载器的方法

wyn enterprise中用到导出功能时&#xff0c;自动调用idm但往往下载报错。 如何关闭idm自动弹出并下载功能呢&#xff1f; 1、设置。 2、选项。

电脑版idm下载器好不好用?

IDM&#xff08;Internet Download Manager&#xff09;是Windows上一款非常好用的下载管理器。在功能方面&#xff0c;它是主流下载器中的佼佼者&#xff0c; 更获得多种奖项&#xff0c; 是。下面&#xff0c;我列出了自己在使用Internet Download Manager的一些实用技巧和窍…

idm下载器简介

Internet Download Manager是Windows、Mac用户比较喜欢的一款老牌下载器&#xff0c;它提供了许多贴心功能&#xff0c;用过的朋友应该深有体会。如果你没有用过IDM下载器&#xff0c;可以看看文章整理相关功能介绍&#xff0c;别错过哟。 1.自动捕获链接 在浏览器中下载文件时…

IDM下载器下载百度网盘文件

郑重声明&#xff1a;本文章只作为个人学习研究中解决百度网盘下载速度慢的解决方法&#xff0c;不作为任何商业用途&#xff0c;所有工具均合法来自于互联网&#xff0c;本人支持正版&#xff0c;拒绝盗版。请读者严格遵守相关规定&#xff0c;本人不对他人通过本文章知识了解…

【下载器篇】IDM下载器个性化设置

【下载器篇】IDM下载器个性化设置 IDM个性化设置—【蘇小沐】 文章目录 【下载器篇】IDM下载器个性化设置1.实验环境 &#xff08;一&#xff09;下载类型扩展UA默认值 &#xff08;二&#xff09;工具栏样式&#xff08;改风格&#xff09;3D Style样式 &#xff08;三&#…

idm下载器去哪里下载 idm下载器用不了什么原因

办公过程中下载资料是常见的操作&#xff0c;好用的下载工具有很多&#xff0c;根据个人使用经验&#xff0c;idm是一款优秀的下载器。那么&#xff0c;idm下载器去哪里下载&#xff1f;我们可以通过idm中文网站下载。idm下载器用不了什么原因&#xff1f;用不了&#xff0c;可…

最新版idm下载器(Internet Download Manager)视频嗅探神器

IDM下载器是国内外优秀下载工具&#xff0c;支持IE, Firefox, Chrome等所有浏览器&#xff0c;兼容所有Windows平台。最具特色功能如续传功能&#xff0c;支持恢复因为断线、网络问题、计算机宕机等故障导致中断的下载任务。Internet Download Manager具有持断点续传&#xff0…

IDM下载器的安装与使用

前言 IDM&#xff08;Internet Download Manager&#xff09;是一款不限速的Internet下载器。大家可以把我用Microsoft Edge的下载情况和用IDM下载的情况相对比。 用Edge&#xff1a; 用IDM&#xff1a; 接下来我就教大家怎样安装这款神仙级的软件。 1.下载安装包 IDM安装包…

idm下载器如何使用 idm下载器使用技巧

idm下载器一直被称为下载神器&#xff0c;不仅是因为它的多线程下载模式能大幅提高资源下载速度&#xff0c;更多的是idm能安装插件、嗅探网页资源并下载&#xff0c;比如一些网页视频、音频等等&#xff0c;具体idm下载如何使用呢&#xff1f;下面告诉大家几个idm下载器使用技…