天天看点

串查找 数据结构

串查找

在一个串中查找满足条件的某个子串,要求查找所有满足条件的子串,并打印位置。

以下:

#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct{
	char data[255];
	int len;
}String;
void StrAssign(String *S,String *T,int sum[])
{ //生成串,并比较 
    int i=0,j=0,k=0;
    while (i<= S->len )
    {
        if(j == T->len)  
		{
        	sum[k] = (i-j+1);
             j = 0;
             k++;
		}
        if(S->data[i] == T->data[j])
        {
            i++;
            j++;
        }
        else
        {
            i=i-j+1;
            j=0;
        }
    }
 } 
 int sum[255] = {0};
 int main(){
 	String T,S;
 	int i=0,k=0,q = 0;
 	T.len = S.len = 0;
 	cout<<"输入主串,以#结束:"<<endl;
 	cin>>S.data[0];
	 while(S.data[i] != '#'){
	 	cin>>S.data[i+1];
	 	++i;
	 	++S.len;
	 } 
 	cout<<"输入子串,以#结束:"<<endl;
 	cin>>T.data[0];
	 while(T.data[k] != '#'){
	 	cin>>T.data[k+1];
	 	++k;
	 	++T.len;
	 } 
 	StrAssign(&S,&T,sum);
 	cout<<"子串的位置分别为:"<<endl;
 	while(sum[q] != 0){
 		cout<<sum[q]<<"\t";
 		q++;
	 }
 	return 0;
 }


           

继续阅读