版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章串
4.1知识点概述
串是一种特殊的线性表,它的每个结点仅由一个字符组
成。串是计算机中主要的非数值处理的对象,在计算机文字
编辑、词法分析等方面有着广泛的应用。串的基本运算有:
串赋值、串复制、判断串空否、求串长、串联接、求子串、
子串位置、串比较、串置换、插入和删除等。串的存储有顺
序存储(定长顺序存储和堆存储)和链式存储。
4.2字符串的基本操作
一、实验目的
1、掌握字符串的基本操作
2、掌握字符串函数的基本使用方法
3、熟悉串的模式匹配算法和一般的文字处理方法
二'实验内容
(一)验证实验
1、串的模式匹配:设有一目标串s和一模式串si,判
断目标串s中是否包含模式串Slo
方法是:从目标串s中的第一个字符开始,按si模式
串的长度si.len,与si子串中的字符依次对应比较。若不
匹配,则再从目标串S中的第二个字符开始,仍按S1模式
串的长度si.len,与si子串中的字符依次对应比较。如此
反复进行比较。直到匹配成功或者目标串s中剩余的字符少
于si的长度为止。若匹配成功,则返回si在s中的位置。
若匹配不成功,则返回函数值一1。
2、串连接:将两个字符串连接。其中一个串接在另一个
串的末尾,生成一个新串。(注意:串的末尾有\0)若给出
两个串si和s2,把s2连接在si之后,生成一个新串s。
3、两串相等判断:给定两个串si和s2,当si和s2相
等时,返回函数值1,否则返回函数值0。
实验程序:
1、#defineMAXLEN25
typedefstruct
{charch[MAXLEN];
intlen;
}string;
intindex(strings,stringt,intpos){
inti,j;
i=pos;j=0;
while(i<s.len&&j<t.len){
if(s.ch[i]==t.ch[j]){++i;++j;}
else{i=i-j+l;j=0;}
)
if(j>t.len-l)return(i-t.len);
elsereturn(-1);
)
main()
{stringa={"BeijingShanghai
China",22},al={"Shanghai",8};
intr;
r=index(a,al,O);
printf("\n%d",r);
)
2、#defineMAXLEN14
typedefstruct
{charch[MAXLEN];
intlen;
}string;
stringconnect(stringsi,strings2){
strings;
inti;
if(s1.len+s2.1en<=MAXLEN)
for(i=0;i<s1.len;i++)
s.ch[i]=sl.ch[i];
for(i=0;i<s2.1en;i++)
s.ch[s1.len-l+i]=s2.ch[i];
s.len=sl.len+s2.1en-l;}
else
s.len=O;
return(s);
)
main()
{stringal={"Beijing",8},a2={"Ching",6};
stringa;
a=connect(al,a2);
printf("\n%s\n%d",a.ch,a.len);)
3、#defineMAXLEN13
typedefstruct
{charch[MAXLEN];
intlen;
}string;
intequal(stringsi,strings2){
inti;
if(sl.len!=s2.1en)
return(0);
else
{for(i=0;i<sl.len;i++)
if(sl.ch[i]!=s2.ch[i])
retum(O);
)
return(l);
)
main()
{stringal={"Beijing",8},a2={"ching",5};
intr;
r=equal(al,a2);
printf("\n%d",r);
)
(二)设计实验
1、根据串的基本操作完成串查找和替换操作
2、用标准c语言实现KMP算法和BM算法。
3、实现单模匹配算法BMH、BMHSo
1、实验程序:
#include<stdio.h>
#defineMAXSTRLEN255
typedefunsignedcharSString[MAXSTRLEN+1];
intstrLength(SStringS)〃求串的长度
{intm;
for(m=0;S[m]!='\0';m++);
returnm;
)
voidStringCopy(SStringT,SStringS)
(
inti;
for(i=l;i<=strLength(S);i++)
T[i]=S[i];
T[i]='\0';
)
voidReplace(SStrings,SStringsi,SStrings2)
{SStringt;
inti,j,f,k=O;
if(strLength(s)>=strLength(sl))
{for(i=0;i<=strLength(s);)
{if(i<=strLength(s)-strLength(sl))
{f=l;〃查找
for(j=0;j<strLength(sl);j++)
if(s[i+j]!=sl[j])
{f=0;
break;}
}
elsef=0;
if(f=l)
(
for(j=0;j<strLength(s2);j++,k++)//替换
t[k]=s2[j];
i=i+strLength(sl);
}
else
{t[k]=s[i];〃复制一个字符
k++;
i++;}}}
StringCopy(s,t);〃复制字符串
}
voidmain()
{SStringstr;
SStringtemp,substr;
printf("请输入主串:”);
scanf("%s",str);
printf(”请输入查找的字符串)
scanf("%s",temp);
printf("请输入替换的字符串)
scanf("%s",substr);
Replace(str,temp,substr);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新苏教版科学三年级上册第三单元3.1 河流与湖泊教学课件
- 催化裂化工岗前风险识别考核试卷含答案
- 电子竞技员成果竞赛考核试卷含答案
- 酱类制品制作工班组管理知识考核试卷含答案
- 炭素压型工班组建设知识考核试卷含答案
- 后勤管理员基础理论水平考核试卷含答案
- 婚姻家庭咨询师班组协作测试考核试卷含答案
- 硬质合金制品烧结工岗位水平评优考核试卷含答案
- 电子陶瓷挤制成型工岗前适应能力考核试卷含答案
- 水工土石维修工安全培训效果评优考核试卷含答案
- AQ3067-2026重大事故隐患判定准则专项培训考核试卷-答案卷
- 2026-2027学年小学五年级上册数学全册教案(教学设计)人教版
- (零模)南京市2027届高三年级学情调研语文试卷(含答案)
- 2026事业单位笔试-云南-云南财务(医疗招聘)历年参考题库含答案详解
- 《计算政治学概论》课件 第1-8章 计算政治学的起源与发展-数字社会治理
- 2025湖南长沙矿山研究院发布校招招聘52人笔试历年典型考点题库附带答案详解
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 自密实混凝土施工方法及浇筑管控要点
- (正式版)DB34∕T 4541-2023 《废弃露天采坑一般工业固废处置与生态修复技术规范》
- 2026年湖北省检察官、法官入员额考试真题(附答案)
- 常见ABO疑难血型案例分析
评论
0/150
提交评论