• 串的基本操作(数据结构)


    串的基本操作

    #include 
    #include 
    #include 
    #define MaxSize 255
    
    typedef struct{
    	char ch[MaxSize];
    	int length;
    }SString;
    
    //初始化
    SString InitStr(SString &S){
    	S.length=0;
    	return S;
    } 
    
    
    //为了方便计算,串的下标从1开始计算 
    //给串赋值 
    SString SetStr(SString &S){
    	char c;
    	int i=1;
    	scanf("%c",&c);
    	while(c!='\n'){
    		S.ch[i++]=c;
    		S.length++;
    		scanf("%c",&c);
    	}
    	return S;
    } 
    
    //返回字符串的长度
    int StrLength(SString &S){
    	return S.length;
    } 
    
    //清空字符串 
    void ClearStrinf(SString &S){
    	S.length=0;
    }
    
    //求字符串的字串
    bool SubString(SString &Sub,SString &S,int pos,int len){
    	if(pos+len-1>S.length) return false;//字串超出范围
    	for(int i=pos;i<pos+len;i++){
    		Sub.ch[i-pos+1] = S.ch[i];
    	} 
    	Sub.length = len;
    	return true;
    } 
    
    //比较字符串
    bool StrCompare(SString &S,SString &T){
    	for(int i=1;i<=S.length && i<=T.length;i++){
    		if(S.ch[i]!=T.ch[i])//进行字符比较 
    			return S.ch[i]-T.ch[i];// S>T:>0,S
    	}
    	return S.length-T.length;//所有字符都相同,长度大的串更大 
    } 
    
    //定位操作
    int Index(SString &S,SString &T){
    	int i=0;
    	int n=StrLength(S);
    	int m=StrLength(T);
    	SString Sub;//暂时存字串 
    	while(i<=n-m+1){
    		SubString(Sub,S,i,m);
    		if(StrCompare(Sub,T)!=0) i++;
    		else return i;//返回字串在主串的位置 
    	}
    	return 0;//不存在与T匹配的字串 
    }
    
    //显示串 
    void ShowString(SString &S){
    	for(int i=1;i<S.length;i++){
    		printf("%c",S.ch[i]);
    	}
    	printf("\n");
    }
    
    int main(){
    	printf("设置串:");
    	SString S;
    	InitStr(S);
    	SetStr(S);
    	int len1;
    	len1=StrLength(S);
    	printf("串长度为:%d\n",len1);
    	printf("设置字串:");
    	SString D;
    	InitStr(D);
    	SetStr(D);
    	int len2;
    	len2=StrLength(D);
    	printf("子串长度为:%d\n",len2);
    	
    	
    	printf("\n");
    	printf("-----------求字符串的字串-------------\n");
    	SString Sub;
    	int pos,len;
    	printf("输入截取的起始位置和长度:");
    	scanf("%d,%d",&pos,&len);
    	if(SubString(Sub,S,pos,len)) {
    		printf("截取后的字串\n");
    		ShowString(Sub);
    	}
    	else printf("截取失败\n");
    	
    	printf("\n");
    	printf("-------------定位字串-------------\n");
    	int i;
    	i=Index(S,D);
    	if(i) printf("字串定位:%d",i);
    	else printf("字串定位失败\n");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119

    展示

    在这里插入图片描述

  • 相关阅读:
    京东数据报告:2023年常温奶消费市场数据分析
    springboot整合log4j
    辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-自动变道-1
    Mac 环境变量配置(待补充)
    opencv 图像的缩放(放大,缩小),翻转,旋转
    WSL2下使用openocd连接外部调试器开发STM32
    【RAG 论文】面向知识库检索进行大模型增强的框架 —— KnowledGPT
    基于Matlab的磁力计校准(附源码)
    2216.美化数组的最少删除数
    Hive数据仓库工具基本架构和入门部署详解
  • 原文地址:https://blog.csdn.net/weixin_56260304/article/details/133746992