//串的堆分配存儲表示
typedef struct{
char *ch; //串址
int length; //串長
}HString;
//串操作聲明
Status InitString_H(HString&);
Status StrAssign_H(HString&,char*);
Status StrCopy_H(HString&,HString);
void StrPrint_H(HString);
Status InitString_H(HString &S)
{
if(S.ch) free(S.ch);
if(!(S.ch=(char*)malloc(sizeof(char))))
exit(OVERFLOW); //分配空間失敗
S.ch=NULL;
S.length=0;
return OK;
}
Status StrAssign_H(HString &T,char *chars)
{//串賦值
int i,j;
char *c;
if(T.ch) free(T.ch); //釋放非空字符串
for(i=0,c=chars;*c;++i,++c); //串長
if(!i){
T.ch=NULL;
T.length=0;
}
else{
if(!(T.ch=(char*)malloc(i*sizeof(char))))
exit(OVERFLOW); //分配空間失敗
for(j=0;j<i;j++)
T.ch[j]=chars[j];
T.length=i;
}
return OK;
}
Status StrCopy_H(HString &T,HString S)
{//復制字符串
int i;