代码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef struct {
char * ch;
int length;
} HString;
typedef int Status;
typedef int ElemType;
Status StrAssign ( HString & T, char * chars)
{
int i, j;
i = strlen ( chars) ;
if ( ! i) {
T. ch = NULL ;
T. length = 0 ;
}
else {
T. ch = ( char * ) malloc ( i* sizeof ( char ) ) ;
if ( ! T. ch) {
printf ( "分配串空间失败!\n" ) ;
return ERROR;
}
else {
for ( j = 0 ; j< i; j++ )
T. ch[ j] = chars[ j] ;
T. length = i;
}
}
return OK;
}
Status 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 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;
}
Status Concat ( HString & T, HString S1, HString S2)
{
int i;
if ( T. ch)
free ( T. ch) ;
T. ch = ( char * ) malloc ( ( S1. length + S2. length) * sizeof ( char ) ) ;
if ( ! T. ch) {
printf ( "新串内存空间申请失败!\n" ) ;
return ERROR;
}
for ( i = 0 ; i< S1. length; i++ )
T. ch[ i] = S1. ch[ i] ;
T. length = S1. length + S2. length;