当前位置:
文档之家› 数据结构实验报告-串与模式匹配
数据结构实验报告-串与模式匹配
for(int j=0; j<a-1; j++)
{
s2[i]=s[j];
i++;
}
for(int k=0; k<lens1; k++)
{
s2[i]=s1[k];
i++;
}
for(int l=(a+b-1); l<lens; l++)
{
s2[i]=s[l];
i++;
}
s2[i]='\0';
return (1);
}
int main(void)
{
printf("(1)建立串s=abcdefghefghijklmn和s1=xyz\n");
char s[MAXSIZE]="abcdefghefghijklmn";
char s1[MAXSIZE]="xyz";
printf("(2)输出串s=");
Disp_Str(s);
int StrDelete(char *s, char *s2, int a, int b)
{
int i=0, lens=StrLength(s);
for(int j=0; j<(a-1); j++)
{
s2[i]=s[j];
i++;
}
for(int k=(a+b-1); k<lens; k++)
{
s2[i]=s[k];
printf("(6)删除串s第2个字符开始的5个字符而产生串s2\n");
StrDelete(s, s2, 2, 5);
printf("(7)输出串s2:");
Disp_Str(s2);
printf("(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2\n");
TiDaiStr(s, s1, s2, 2, 5);
(11)输出串s3;
(12)将串s1和串s2连接起来而产生串s4;
(13)输出串s4。
程序源代码:
2.1的源程序:
#include <stdio.h>
#define MAXSIZE 256
//char s[MAXSIZE];
//求串长
int StrLength(char *s)
{
int i=0;
while(s[i]!='\0')
printf("(9)输出s2=");
Disp_Str(s2);
printf("(10)提取串s的第2个字符开始的10个字符而产生串s3\n");
printf("(11)输出s3=");
i++;
return(i);
}
//串联接
int StrConcat(char *s1, char *s2, char *s)
{
int i=0, j, len1, len2;
len1= StrLength(s1);
len2= StrLength(s2);
if(len1+len2 > MAXSIZE-1)
(2)输出串s;
(3)输出串s的长度;
(4)在串s的第9个字符位置插入串s1而产生串s2;
(5)输出串s2;
(6)删除串s第2个字符开始的5个字符而产生串s2;
(7)输出串s2;
(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2;
(9)输出和串s2.
(10)提取串s的第2个字符开始的10个字符而产生串s3;
return (0);
j=0;
while(s1[j]!='\0')
{
s[i]=s1[j];
i++;
j++;
}
j=0;
while(s2[j]!='\0')
{
s[i]=s2[j];
i++;
j++;
}
s[i]='\0';
return (1);
}
//求子串
int StrSub(char *t, char *s, int i, int len)
{
printf("%c",s[i]);
}
printf("\n");
}
//插入串并保存到新串中
int StrInsert(char *s, char *s1, int i, char *s2)
{
int j=0,k,lens1, lens;
lens=StrLength(s);
lens1=StrLength(s1);
{
int slen,j;
slen=StrLength(s);
if(i<1 || i>slen || len<0 || len>slen-i+1)
{
printf("参数不对");
return (0);
}
for(j=0; j<len; j++)Байду номын сангаас
t[j]=s[i+j-1];
t[j]='\0';
return (1);
i++;
}
s2[i]='\0';
return (1);
}
//用一个串替代另一个串中部分字符并保存到新串中
int TiDaiStr(char *s, char *s1, char *s2, int a, int b)
{
int i=0, lens, lens1;
lens=StrLength(s);
lens1=StrLength(s1);
数据结构实验报告
实验名称
串
班级
0901
姓名
高傲
学号
20091185015
日期
2011 128
实验目的:
(1)掌握顺序串的各种基本运算
(2)掌握模式匹配算法
实验内容:
2.1编写一个程序algo3-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个主函数完成如下功能:
(1)建立串s=”abcdefghefghijklmn”和串s1=”xyz”;
printf("(3)输出串s的长度:%d\n",StrLength(s));
printf("(4)在串s的第9个字符位置插入串s1而产生s2\n");
char s2[MAXSIZE];
StrInsert(s, s1, 9, s2);
printf("(5)输出串s2=");
Disp_Str(s2);
for(k=0; k<i-1; k++)
{
s2[j]=s[k];
j++;
}
for(int l=0; l<lens1; l++)
{
s2[j]=s1[l];
j++;
}
for(int m=k; m<lens; m++)
{
s2[j]=s[m];
j++;
}
s2[j]='\0';
return (1);
}
//删除串中元素并保存到新串中
}
//串比较
int StrCmp(char *s1, char *s2)
{
int i=0;
while(s1[i] == s2[i] && s1[i]!='\0')
i++;
return (s1[i] == s2[i]);
}
//输出串
void Disp_Str(char *s)
{
int i;
for(i=0;i<StrLength(s);i++)