串的堆分配存储表示

来源:互联网 发布:淘宝首页视频如何制作 编辑:程序博客网 时间:2024/04/28 05:13

参考书籍:《数据结构c语言》 作者严蔚敏  

/* Note:Your choice is C IDE */
#include "stdio.h"
typedef int Status;
typedef struct
{
  char *ch;
  int length; 
}HString;
Status StrAssign(HString *T,char *chars)
{
    int i=0,j=0;
    char *c;
    if(T->ch) free(T->ch);
    i=strlen(chars);
    //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(-1);
        for(j=0;j<i;j++)
            T->ch[j]=chars[j];
           
         T->length=i;
         
    }
    return 1;
    
}//StrAssign
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;   
}

void main()
{
    HString T,S;
    char *s="Hello World";
    char *t="Iello World";
    S.ch=NULL;
    S.length=0;
     StrAssign(&S,s);
     T.ch=NULL;
    T.length=0;
     StrAssign(&T,t);

     printf("%s (%d)   %s/n",S.ch,StrCompare(S,T),T.ch);
   
}

原创粉丝点击