C 언어 데이터 구조 에서 포 지 셔 닝 함수 Index 의 사용 방법

3167 단어 데이터 구조Index
데이터 구조 에서 포 지 셔 닝 함수 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("   
"); 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
",ANSWER); return 0; }
구현 효과:

궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기