博客
关于我
串的基本操作实现源码|数据结构
阅读量:333 次
发布时间:2019-03-04

本文共 3498 字,大约阅读时间需要 11 分钟。

typedef struct {   	char *ch;	int length;}HStirng;
ADT{   	StrAssign(&T,chars);	//chars是字符串常量	//生成一个值等于chars的串T	strCopy(&T,S)	//串S存在	//由串S复制得串T		StrEmpty(S)	//串S存在	//若为空则返回true	StrCompare(S,T)	//S>T返回值大于0	//S
bool StrAssign(&T,chars){   	//delete[] 释放new分配的对象数组指针指向的内存	if(T.ch)	{   		delete[] T.ch;	}	char *ctemp = chars;	T.length=0;	//求T.length的长度	while(*ctemp)	{   		++T.length;		++ctemp;	}	T.ch = new char[T.length+1];		if(!T.ch)	{   		printf("分配失败!");		system(pause);		exit(-1);	}	else	{   		char *temp = T.ch;		while(*chars)		{   			*temp++ = *chars++;		}		printf("分配成功!");		return true;	}
bool StrCopy(&T,S){   	if(!S.ch)	{   		printf("串S不存在!");		system(pause);   		 exit(0);	}		 if(T.ch)	 {   	  delete[] T.ch;	 }	 	T.length = S.length;	T.ch = new char[S.length+1];		if(!T.ch)	 {   	  printf("分配失败!");	  system(pause);	  exit(-1);	 }		char *temps = S.ch;	char *tempt = T.ch;		while(*temps)	{   		*tempt++ = *temps++;	}	*tempt = '\0';		printf("成功!");	return true;}
bool StrEmpty(S){   	  if(!S.ch)	  {   	   printf("串不存在!\n");	   system(pause);	   exit(0);	  }	 else	 {   	 	if(!S.length)	 	{   	 		printf("串为空!\n");	 		return true;	 	}	 	else	 	{   		    printf("串不为空!\n");		    return false;		}	 }	}

在这里插入图片描述

int StrLength(S){      if(!S.ch)   {   	    printf("串不存在!\n");	    system(pause);	    exit(0);   }  else  {     	    printf("串的长度%d",S.length);  	    return S.length;  }

在这里插入图片描述

注意清空串跟一个串不存在的区别!

清空是ch="\0",length=0,但给他分配了内存空间
串不存在是没有分配内存空间

bool Contact(&T,S1,S2){   	if(!T.ch)	{   	     printf("串不存在!\n");             system(pause);             exit(0);	}	T.length = S1.length+S2.length;	T.ch = new char[T.length+1];	if(!T.ch)	{   	     printf("分配失败!\n");             system(pause);             exit(-1);	}	char *temp = T.ch;	while(*S1.ch)	{   		*temp++ = *S1.ch++;	}		while(*S2.ch)	{   	       *temp++ = *S2.ch++;	}		*temp = '\0';	printf("连接成功!\n");	return true;}
bool SubString(&Sub,S,pos,len){   	if(!S.ch)	{   	     printf("串不存在!\n");             system(pause);             exit(0);	}	if(Sub.ch)	{   	     delete[] Sub.ch;	}	if(Pos<1 || Pos>S.length || len<0 || len>S.length-Pos+1 )	{   		printf("Pos&&len 错误!");		Sub.ch = new char[1];		*Sub.ch="\0";		Sub.length = 0;		return false;	}	Sub.ch = new char[len+1];	char *temp = Sub.ch;	for(int i=1;i != Pos;i++)	{   		S.ch++;	}	for(i=0;i!=len;i++)	{   		Sub.ch++ = S.ch++;	}	return true;}
bool Index(S,T,pos){   	if(!S.ch || !T.ch)	{   	     printf("串不存在!\n");             system(pause);             exit(0);	}	if(Pos <= 1 || Pos >= S.length)	{   	    printf("Pos错误!");	}	else	{   		char *tempt = T.ch;	  	char *temps = S.ch;		for(int i=0;i
T.length) { printf("匹配成功"); return tempt.length-temps.length; } else return false;}
bool StringReplace(HStirng &Str,HStirng T,HStirng V){   	if(!Str.ch || !T.ch || !V.ch || 0 == T.length)	{   		printf("串不存在或为空!");		system(pause);		exit(0);	} 	int pos = Index(S,T,1);	while(pos)	{   		int nlength = Str.lenght + V.length - T.length;		char *ctemp = new char[nlength+1];		if(!ctemp)		{   			printf("函数执行失败!");			system(pause);                        exit(-1);		}		char *temp = ctemp;		char *stemp = Str.ch;		char *vtemp = V.ch;		for(int i=0;i != pos;i++)		{   			*temp++ = *stemp++;		}		for(i=0;i!=T.length;i++)		{   			stemp++;		}		for(i=0;i!=V.length;i++)		{   			*temp++ = *vtemp++;		}		while(*stemp)		{   			*temp++ = *stemp++;		}		*temp='\0';		delete Str.ch;		Str.length = nlength;		Str.ch  = temp;		pos = Index(S,T,Pos+V.length);	}	printf("子串替代成功");	return true;}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转载地址:http://ulsh.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>