⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strs.cpp

📁 数据结构中所有算法的实现
💻 CPP
字号:
#include "d:\cpp\head.h"
#define MAXSTRLEN 255
typedef unsigned char SString[MAXSTRLEN+1];
//------------------------------------------------------
void StrAssign(SString S,char *ch){
  //Create a string,it's value equal to char group ch
  int i=1;
  while(*ch!='\0')S[i++]=*ch++;
  S[0]=i-1;
}//StrAssign

int StrLength(SString S){
  //The length of string S
  return S[0];
}//StrLength

Bool StrEmpty(SString S){
  //If the string is empty,return ok,else return false
  if(S[0]==0)return TRUE;
  else return FALSE;
}//StrEmpty

Status Concat(SString &T,SString S1,SString S2){
  int i;
  Bool uncat;
  if(S1[0]+S2[0]<=MAXSTRLEN){
    for(i=1;i<=S1[0];i++)T[i]=S1[i];
    for(i=S1[0]+1;i<=S1[0]+S2[0];i++)T[i]=S2[i-S1[0]];
    T[0]=S1[0]+S2[0];
    uncat=TRUE;
  }//if
  if(S1[0]+S2[0]>MAXSTRLEN && S1[0]<MAXSTRLEN){
    for(i=1;i<=S1[0];i++)T[i]=S1[i];
    for(i=S1[0]+1;i<=MAXSTRLEN;i++)T[i]=S2[i-S1[0]];
    T[0]=MAXSTRLEN;
    uncat=FALSE;
  }//if
  if(S1[0]==MAXSTRLEN){
    for(i=1;i<=S1[0];i++)T[i]=S1[i];
    T[0]=MAXSTRLEN;
    uncat=FALSE;
  }//if
  return uncat;
}//Concat

Status SubString(SString &Sub,SString S,int pos,int len){
  int i;
  if(pos<1||pos>S[0]||len<0||len+pos>S[0]+1) return ERROR;
  for(i=pos;i<=pos+len-1;i++) Sub[i-pos+1]=S[i];
  Sub[0]=len;
  return OK;
}//SubString

int Index(SString S,SString T,int pos){
  int i,j,t;
  i=pos;
  j=1;
  while(i<=S[0]&&j<=T[0]){
    if(S[i]==T[i]){i++;j++;}
    else{i=i-j+2;j=1;}
  }//while
  if(j>T[0])return i-T[0];
  else return 0;
}//Index
//------------------------------------------------------
void main(){
  int i;
  char *S="asdqase";
  char *T=" qas";
  S[0]=6;
  T[0]=3;

  //char *T="ohiw";
  printf("----%d\n",Index(S,"qas",2));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -