数据结构中定位函数Index的使用方法

实现代码:

#include

#include

#include

#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

Status SubString(SString Sub,SString T,int pos,int len);

//用Sub返回串T的第pos个字符起长度为len的子串

int Index(SString S,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,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,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;

}

实现效果:

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

index函数c语言,C语言数据结构中定位函数Index的使用方法相关推荐

  1. Oracle 语言分类 数据类型 数据类型转换 常用函数 集合操作 子查询

    SQL分类 SQL(Structure Query Language)语言是数据库的核心语言.SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL.1 ...

  2. c语言实现bf算法的定位函数,数据结构c语言版严蔚敏清华大学出版社第四章串.ppt...

    数据结构c语言版严蔚敏清华大学出版社第四章串 模式匹配(定位) 设有主串S和子串T(将S称为目标串,将T称为模式串),在主串S中,从位置start开始查找,如若在主串S中找到一个与子串T相等的子串,则 ...

  3. 数据结构中常用的7种排序方法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.冒泡排序 2.选择排序 3.插入排序 4.希尔排序 5.快速排序法 6.归并排序 7.堆排序 1.冒泡排序 基本介绍 冒 ...

  4. 函数打桩原理_难重现问题定位“函数打桩”

    Authon:Baohaitao Date: 2016-11-25 目的: linux应用软件运行过程中出现难重现的无规律死机,在core文件中gdb中调试没有发现有价值信息:这里给出了另一个思路:函 ...

  5. (C语言)实现函数逆序输出一组数据

    实现函数逆序输出一组数据 题目:函数实现将输入的一组数据逆序输出的功能.(参考函数原型:void isort(int a[], int n)) 输入输出格式要求: 编写函数void isort(int ...

  6. c语言文件写入函数有哪些,c语言文件读写函数有哪些?

    c语言文件读写函数有:"fgetc"和"fputc"(字符读写函数)."fgets"和"fputs"(字符串读写函数). ...

  7. C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  8. python文件定位函数_C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  9. php访问mysql函数吗,PHP访问MySQL数据库函数简介

    PHP访问MySQL数据库函数简介 PHP访问MySQL数据库函数简介 1. 进行数据库连接 连接数据库服务器,就是客户端向己运行的数据库服务器发出连接请求, 成功以后就可以对数据库进行相应操作,由于 ...

  10. VLOOKUP函数将一个excel表格的数据匹配到另一个表中

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

最新文章

  1. win7安装MongoDB学习笔记
  2. cf体验服_CF手游体验服_穿越火线枪战王者体验服申请_12月版本
  3. 福利来袭,送你105例C语言实战
  4. Java下的可视化开发工具使用 WindowBuilder Pro
  5. SAP License:CKMLCP运行物料帐时单个物料冲突无法运行
  6. openJDK之如何下载各个版本的openJDK源码
  7. https被修改成http排查过程
  8. 用XSLT和XML改进Struts
  9. HDU4712 Hamming Distance (随机化)
  10. 捕获asp.net下的未处理异常
  11. 【调查 】DBA的压力究竟有多大?
  12. eclipse java环境配置_Eclipse怎么配置运行环境?
  13. 湘潭大学计算机学院考研喜报,湘潭大学化学学院考研率连续七年在全校排名第一...
  14. 小花语音机器人(零)-单片机控制驱动板PCB
  15. 虚拟机14.00和CentOS7安装全部过程(百度网盘安装包)
  16. 牛学长苹果数据管理工具
  17. chrome浏览器Flash Player版本太低,不能使用该上传功能!
  18. win0如何查看计算机工作组,win10家庭版如何查看工作组计算机
  19. OpenLayers 3实践与原理探究1-ol2 VS ol3
  20. 对控制台EXE程序的自动运行问题——以6S模型6s.exe为例

热门文章

  1. CTF靶机 Lian_Yu 笔记
  2. Matlab坐标轴标签中文设置宋体,英文设置新罗马字体(Times New Roman)
  3. kernel logo的制作
  4. 计算机等级考试照片几寸,二寸照片的尺寸是多少?(小二寸和二寸是多少CM分别多大)...
  5. 北京仁源欣生获200万美元天使轮融资,和玉资本领投
  6. BootStrap快速入门
  7. EBS常用查询语句_查询银行账户
  8. BZOJ 2037 [Sdoi2008] Sue的小球
  9. 用python语言怎么打出菱形的*号_Python打印“菱形”星号代码方法
  10. WD移动硬盘无法存储,提示空间不够(已解决)——当移动硬盘遇到坚果云