主题:关于数据结构中的串定位的问题
/* 这个是串的操作*/
#include "stdio.h"
#include "string.h"
#define AA 30
#define A 6
#define B 6
typedef struct d
{ char m[AA];
int len;
}dd;
int index(dd s,dd s1)
{
int i,j,k; /* 刚才这里落下了一个";结果导致很多的错误,包括未定义*/
i=0;
while(i<=(s.len-s1.len))
{ j=i;
k=0;
while((k<s1.len)&&(s.m[j]==s1.m[k])) /* 有事吵了两个s,晕死了*/
{j++;
k++;
}
if(k==s1.len)
return (i);/*找到位置,然后返回值*/
else
i++;
}
return(-1);
}
main()
{ dd a,v;int i;
printf("kai shi shur u:\n");
for(i=0;i<A;i++)
scanf(" %c",&a.m[i]);
a.len=i+1;
printf("inter the zi chuan :\n");
for(i=0;i<3;i++)
scanf(" %c",&v.m[i]);
v.len=i+1;
q=index(a,v);
printf(" weizhi shi %3d",q);
getch();
}
意思是我定义了一个串的结构,不是字符串,是数据结构上的串,我定义了一个大串为a,现在我有定义了一个子串为v,我的程序的意思是,在这个大串中查找这个子串的位置,有的话,返回为i,即字串的位置 ,但是,我现在根本就是不能实现啊,老是输出一个-1,而且吧,如果我把那个return -1去了,就是一值返回3(我想是系统随机生成的),这个例子是在书上的,但是,我老是发现不了到底是哪里的错,,请各位帮忙啊,,,,,,,,,,,,
再就是,我的这个串的建立是不是正确 啊?那个len,也就是输入的字符的长度该怎样输入?????麻烦了。。各位高手们
#include "stdio.h"
#include "string.h"
#define AA 30
#define A 6
#define B 6
typedef struct d
{ char m[AA];
int len;
}dd;
int index(dd s,dd s1)
{
int i,j,k; /* 刚才这里落下了一个";结果导致很多的错误,包括未定义*/
i=0;
while(i<=(s.len-s1.len))
{ j=i;
k=0;
while((k<s1.len)&&(s.m[j]==s1.m[k])) /* 有事吵了两个s,晕死了*/
{j++;
k++;
}
if(k==s1.len)
return (i);/*找到位置,然后返回值*/
else
i++;
}
return(-1);
}
main()
{ dd a,v;int i;
printf("kai shi shur u:\n");
for(i=0;i<A;i++)
scanf(" %c",&a.m[i]);
a.len=i+1;
printf("inter the zi chuan :\n");
for(i=0;i<3;i++)
scanf(" %c",&v.m[i]);
v.len=i+1;
q=index(a,v);
printf(" weizhi shi %3d",q);
getch();
}
意思是我定义了一个串的结构,不是字符串,是数据结构上的串,我定义了一个大串为a,现在我有定义了一个子串为v,我的程序的意思是,在这个大串中查找这个子串的位置,有的话,返回为i,即字串的位置 ,但是,我现在根本就是不能实现啊,老是输出一个-1,而且吧,如果我把那个return -1去了,就是一值返回3(我想是系统随机生成的),这个例子是在书上的,但是,我老是发现不了到底是哪里的错,,请各位帮忙啊,,,,,,,,,,,,
再就是,我的这个串的建立是不是正确 啊?那个len,也就是输入的字符的长度该怎样输入?????麻烦了。。各位高手们