#include<stdio.h>
#include<math.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
/*函数结果状态代码*/
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
/* */
typedef struct
{
char *ch;
int length;
}HString;
Status StrAssign(HString *T,char *chars)
{
int i,j;
if((*T).ch)
{
free((*T).ch);
(*T).ch=NULL;
}
i=strlen(chars);
if(!i)
{
(*T).ch=NULL;
(*T).length=0;
}
else
{
(*T).ch=(char*)malloc(i*sizeof(char));
if(!(*T).ch)
{
printf("OVERFLOW");
exit(0);
}
for(j=0;j<i;j++)
(*T).ch[j]=chars[i];
(*T).length=i;
}
return OK;
}
Status StrCopy(HString*T,HString S)
{
int i;
if((*T).ch)
free((*T).ch);
(*T).ch=(char*)malloc(S.length*sizeof(char));
if(!(*T).ch)
{
printf("OVERFLOW");
exit(0);
}
for(i=0;i<S.length;i++)
(*T).ch[i]=S.ch[i];
(*T).length=S.length;
return OK;
}
Status StrEmpty(HString S)
{
if(S.length==0&&S.ch==NULL)
return TRUE;
else
return FALSE;
}
int StrCompare(HString S,HString T)
{
int i;
for(i=0;i<S.length&&i<T.length;i++)
if(S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
return S.length-T.length;
}
int StrLength(HString S)
{
return S.length;
}
Status ClearString(HString *s)
{
if((*s).ch)
{
free((*s).ch);
(*s).ch=NULL;
}
(*s).length=0;
return OK;
}
Status SubString(HString *Sub,HString S,int pos,int len)
{
int i;
if(pos<1||pos>S.length||len<0||len>S.length-pos+1)
return ERROR;
if((*Sub).ch)
free((*Sub).ch);
if(!len)
{
(*
大家看看我的这个List()函数为什么显示不出来
最新推荐文章于 2024-04-27 20:36:23 发布