算法4.2创建空顺序串 PSeaString createNullStr seq( void PSeqstring pstr pstr=(PSeqString) malloc(sizeof (struct SegString)) if (pstr==NULL printf( out of space!! \n") e⊥se pstr->n=0 return pstr
PSeqString createNullStr_seq( void ) { PSeqString pstr; pstr=(PSeqString)malloc(sizeof(struct SeqString)); if (pstr==NULL) printf("Out of space!!\n"); else pstr->n = 0; return pstr; } 算法4.2 创建空顺序串
2.变长顺序表示 typedef struct char ch length: JHString; void StrAssign(HString*str, char *chars) void StrCopy(hstring dest, HString src) void StrCopyN(HStringdest, HString Src, int n) BOOL ISStrEmpty(HString str) int StrCompare(HString strl, HString str2) int StrEngth(HString str) void Clear String(HString * str); Status StrCat(HString*dest, HString str1, HString str2)
typedef struct { char *ch; int length; }HString; void StrAssign(HString *str, char *chars); void StrCopy(HString *dest, HString src); void StrCopyN(HString *dest, HString src, int n); BOOL IsStrEmpty(HString str); int StrCompare(HString str1, HString str2); int StrLength(HString str); void ClearString(HString *str); Status StrCat(HString *dest, HString str1, HString str2); …… 2. 变长顺序表示
void StrAssign (HString *str, char*chars)i char *p=chars int length, 1; if(str->ch) /*释放已有空间 free(str->ch); str->ch= NULL: str->length =0; whil(p!=#)p++;/求串长* length=p-chars-l if(length==0) str->length=0 else{重新申请空间 str->length=length str->ch=(char *)malloc(sizeof(char)"length); for(i=0; i<length; i++) str->chi= charsi /s End of StrAssigno/
void StrAssign(HString *str, char *chars) { char *p = chars; int length, i; if(str->ch) /* 释放已有空间 */ { free(str->ch); str->ch = NULL; str->length = 0; } while(*p!=‘#’) p++ ; /* 求串长 */ length = p - chars - 1; if(length == 0) str->length = 0; else{ /* 重新申请空间*/ str->length = length; str->ch = (char *)malloc(sizeof(char)*length); assert(str->ch); for(i=0; i<length; i++) str->ch[i] = chars[i]; } } /* End of StrAssign() */
void StrCopy(HString *dest, HString src) char int if(dest->ch free(dest->ch); dest->ch= NULL; p=(char *)malloc(sizeof(char)*src length); for(i=0; i<srclength; i++) p-src.ch i; dest->ch=p dest->length=srclength;
void StrCopy(HString *dest, HString src) { char *p; int i; if(dest->ch) { free(dest->ch); dest->ch = NULL; } p = (char *)malloc(sizeof(char) * src.length); assert(p); dest->ch = p; dest->length = src.length; for(i=0; i<src.length; i++) p[i] = src.ch[i]; } for(i=0; i<src.length; i++) p[i] = src.ch[i]; dest->ch = p; dest->length = src.length;