C语言数据结构中定位函数Index的使用方法
更新时间:2020年4月25日 17:29 点击:1742
数据结构中定位函数Index的使用方法
实现代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 40 //最大字符串 typedef int Status; typedef char SString[MAXSIZE+1]; //此处声明的SString[maxsize+1]虽是数组,在SubString中作为指针使用, //因位是指针,SString[0]存放实际数组的地址,使用时不用加*或&,直接传入数组的值 /*******************************声明部分****************************************/ Status StrAssign(SString T,char *chars); //生成一个其值等于chars的串T 第一个元素为字符串长度 int StrLength(SString S); //操作结果:返回S的元素个数,成为串的长度 int StrCompare(SString S,SString T); //操作结果:若S>T,则返回值>0;若S = T,则返回值 =0;若S<T,则返回值<0 Status SubString(SString Sub, SString T,int pos,int len); //用Sub返回串T的第pos个字符起长度为len的子串 int Index(SString S,SString T,int pos); //若主串S中存在和串T值相同的子串,则返回它在主串中第pos个字符之后第一次出现的位置;否则函数值为0 /*******************************函数部分****************************************/ Status StrAssign(SString T,char *chars) { int i,ct; for(i = 0;i <= MAXSIZE; i++) T[i] = '\0'; //全部清零 T[0] = strlen(chars); for(ct = 1;*chars != '\0';ct++,chars++){ T[ct] = *chars; } return OK; } int StrLength(SString S) { return S[0]; } int StrCompare(SString S,SString T) { int cnt = 1; while(cnt <= S[0] && cnt <= T[0]){ //非空前提下 if(S[cnt] == T[cnt]){ //相等 cnt++; } else{ //不相等 return S[cnt] - T[cnt]; } } return S[0]-T[0]; } Status SubString(SString Sub, SString T,int pos,int len) { if(pos<1 || pos>T[0] || len<0 || len>T[0]-pos+1) return ERROR; int ct,cnt; for(ct = 1,cnt = pos;cnt <= len+pos;ct++,cnt++){ Sub[ct]=T[cnt]; } Sub[0] = len+1; return OK; } int Index(SString S,SString T,int pos) { SString Sub; int i = pos; if(pos > 0){ int n = StrLength(S),m = StrLength(T); while( i<= n-m+1){ SubString(Sub,S,i,m-1); if(StrCompare(Sub,T)==0) return i; else i++; } }//if printf("不存在\n"); return 0; //S中不存在与T相等的子串 }//Index /*******************************主函数部分**************************************/ int main() { char *chars1 = "abcdefhg"; char *chars2 = "defhg"; SString S,T; StrAssign(S,chars1); StrAssign(T,chars2); int ANSWER = Index(S,T,1); printf("找到子串T在S中的位置 = %d\n",ANSWER); return 0; }
实现效果:
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
- 这篇文章主要介绍了C#数据结构之队列(Quene),结合实例形式较为详细的讲述了队列的功能、原理与C#实现队列的相关技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#常用数据结构和算法,这里我们总结了一些知识点,可以帮助大家理解这些概念。...2020-06-25
- 本文主要介绍了react为什么不推荐使用index作为key,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-22
Webpack打包css后z-index被重新计算的解决方法
这篇文章主要跟大家分享了Webpack打包css后z-index被重新计算的解决方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。...2017-06-24- 这篇文章主要介绍了c#索引(Index)和范围(Range)的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-12-08
- 本文主要和大家分享几种Redis数据结构详解,希望文中的案例和代码,能帮助到大家。...2021-01-15
- 这篇文章主要为大家详细的介绍了Redis高效的原因以及分析了Redis高效的数据结构,有需要的朋友可以借鉴参考下,希望能够有所帮助...2021-09-27
- 上文对数据结构与算法,有了一个简单的概述与介绍,这篇文章,我们介绍一中典型数据结构——线性结构...2020-06-25
- 这篇文章主要介绍了C语言数据结构递归之斐波那契数列的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下...2020-04-25
DropDownList获取的SelectIndex一直为0的问题
由于初始化判断出错导致每次传到服务器的时候会初始化一次,这就导致每次获取DropDownList的SelectIndex的时候只能是0...2021-09-22- 这篇文章主要介绍了C++数据结构与算法之哈夫曼树的实现方法,简单说明了哈夫曼树的原理,并结合具体实例形式分析了C++实现哈夫曼树的相关操作技巧,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了基于JavaScript的数据结构队列动画实现示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-06
IE6下select z-index无效div被遮挡解决办法
文章来详细的举了三个实例来介绍关于IE6下select z-index无效div被遮挡解决办法,有碰到类是问题的同学可参考一下解决方案。 解决方法之一:Iframe包裹select元素...2017-07-06- 这篇文章主要介绍了数据结构 双向链表的创建和读取详解及实例代码的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言数据结构之动态分配实现串的相关资料,希望通过本文能帮助到大家,让大家实现数据结构中动态分配实现串的实例,需要的朋友可以参考下...2020-04-25
- <? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){...2016-11-25
- 我们在进行编程时,往往会开发诸多的算法,那么我们怎么在那么多算法中找到最好的那个呢?本文主要介绍时间和空间复杂度概念及时间复杂度的求解,预祝读者学习愉快...2021-10-23
- 这篇文章主要介绍了C语言数据结构树的双亲表示法实例详解的相关资料,需要的朋友可以参考下...2020-04-25
- 各种资料关于loose index scan的解释很拗口,其实等同于oracle的index skip scan。今天我们就来详细看看loose index scan的使用...2015-12-14
- 这篇文章主要介绍了C语言中数据结构之链式基数排序的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下...2020-04-25