[数据结构]第三次作业:字符串替换
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();
}
/* 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();
}
相关文章推荐
- 数据结构示例之字符串替换
- 算法练习:将字符串中所有的空格替换为'%20'(只用基本数据结构)
- 算法与数据结构第三次作业 区间最值
- day2-作业 shell sed 字符串替换
- 设计模式第三次作业
- 团队第三次作业 – 软件设计
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
- 【数据结构】自动机用于多个目标字符串的匹配查找
- 关于如何讲字符串中的空格或者\n替换为\r\n
- 替换多个文件中的同一个字符串
- JS 字符串变量全局替换
- EditPlus正则表达式替换字符串详解
- [C]no2.字符串替换
- java中String字符串的替换函数:replace与replaceAll的区别
- 软件工程第三次作业 - 每周例行汇报
- 字符串中替换空格
- 软件工程——第三次作业(1)
- 2017年软件工程第三次作业-1每周例行报告
- 字符串中符号的替换---replace的用法
- 4-1 将字符串中数字字符替换成# (50分)