您的位置:首页 > 理论基础 > 数据结构算法

[数据结构]第三次作业:字符串替换

2006-01-22 19:58 281 查看
/* ============== Program Description ============= */
/* Freshare's 3st of dswork */
/* ================================================== */

#include<stdio.h>
#include<stdlib.h>
#define MAXSTRLEN 255

int length (char s[]) //求数组长度
{
int i=0;
while (s[i]!='/0')
{i++;}
return i;
}

/*
void get_next(SString T,int next[]) // 算法4.7
{
int i=0;
int j=0;
next[1]=0;
while (i<T[0]) {
if(j==0 || T[i]== T[j]) {
++i; ++j; next[i] = j;
} else j= next[j];
}
printf("%d",next[2]);
printf("%d",next[3]);
printf("%d",next[4]);
}

int Index_KMP(SString S, SString T) { // 算法4.6
int next[MAXSTRLEN];
int i = 1;
int j = 1;
get_next(T, next);
while (i <= S[0] && j <= T[0])
{
if (j == 0 || S[i] == T[j])
{
++i; ++j;
}
else j = next[j];
}
if (j > T[0]) return i-T[0];
else return 0;
}
*/

int Index (char S[], char T[]) //模式匹配算法
{
int i=0;
int j=0;
while (S[i]!='/0'&&T[j]!='/0')
{
if (S[i]==T[j]) {++i;++j;}
else {i = i-j+1;j=0;}
}
if ( T[j]=='/0') return i-length(T);
else return 0;
}

void main() //主函数
{
char str1[MAXSTRLEN];
char str2[MAXSTRLEN];
int position=0;
int i,j;
int l;
printf("请输第一个字符串:");
gets(str1);
printf("请输第二个字符串:");
gets(str2);
l=length(str2);
//pos=Index_KMP(str1, str2) ;
position=Index(str1,str2) ;
if (position==0)
printf("没有匹配!");
else
{
for(i=0;i<position;i++) {str2[i]=str1[i];}
j=i+l;
while(str1[j]!='/0')
{str2[i]=str1[j]; i++; j++;}
str2[i]='/0';
printf(">>>>>>>>> 结果为:%s/n",str2);
}
getchar();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: