数据结构实验任务三:利用KMP算法实现查询主串中是否含有目标子串

改代码为数据结构试验任务三:利用KMP算法实现查询主串中是否含有目标子串;

需要考虑DNA都是环状的,应用两个字符串实现环状结构。

数据结构实验任务三:利用KMP算法实现查询主串中是否含有目标子串_第1张图片

#include 
#define MaxC 20
#define MaxE 20
using namespace std;


class Exp{		//定义样本类 

	private:
		int used=0;				//是否读取信息 
		char vir[MaxC];			//病毒DNA 
		char per[MaxC];			//人类DNA 
		int vsize;				//病毒DNA串长度 
		int psize;				//人类DNA串长度 
	public:
		int getvsize(){			//获取病毒长度 
			return vsize;
		}
		int getpsize(){			//获取人类DNA长度 
			return psize;
		}
		void setVir(char* a){	//设定病毒DNA 
			int i=0;
			while(a[i]!='\0'){
				vir[i] = a[i];
				i++;
			}
			vir[i] = '\0';
			vsize = i;
			used = 1;
		}
		void setPer(char* a){		//设定人类DNA 
			int i=0;
			while(a[i]!='\0'){
				per[i] = a[i];
				i++;
			}
			per[i] = '\0';
			psize=i;
			used = 1;
		}
		char* getVir(){				//获取病毒DNA 
			return vir;
		}
		char* getPer(){				//获取人类DNA 
			return per;
		}
		int Used(){					//返回该样本是否有效 
			return used;
		}
};

//函数声明
int KMP(char *sub,char* m ,int ns,int rm);		//KMP检查子串是否在主串内 
void Read(Exp *a);								//读取样本数据 
void PrintE(Exp *a);							//打印样本数据 
void Test(Exp *a); 								//进行样本检测 


int KMP(char *sub,char *m,int ns,int nm){
	 int next[MaxC];
	 int j=0;
	 next[0] = 0;
	 next[1] = 0;
	 for(int i=2;i>v>>p;
		if(v[0]=='0'||p[0]=='0')break;
		a[i].setVir(v);
		a[i].setPer(p);
	} 
}
//打印样本数组 
void PrintE(Exp* a){
	for(int i=0;;i++){
		if(a[i].Used()==1){
			cout<

改代码仅供参考,欢迎交流。

你可能感兴趣的:(数据结构实验,算法,数据结构)