4.2.2堆分配存储表示 这种存储表示的特点是,仍以一组地址连续的 存储单元存放串值字符序列,但它们的存储空间是 在程序执行过程中动态分配而得。所以也称为动态 存储分配的顺序表。在C语言中,利用动态存储管 理函数,来根据实际需要动态分配和释放字符数组 空间。这样定义的顺序串类型也有两种形式。 typedef char*string;llc中的串库相当于此类型定义 typedef struct{ char *ch; int length; }hsring;
4.2.2堆分配存储表示 这种存储表示的特点是,仍以一组地址连续的 存储单元存放串值字符序列,但它们的存储空间是 在程序执行过程中动态分配而得。所以也称为动态 存储分配的顺序表。在C语言中,利用动态存储管 理函数,来根据实际需要动态分配和释放字符数组 空间。这样定义的顺序串类型也有两种形式。 typedef char *string; //c中的串库相当于此类型定义 typedef struct{ char *ch; int length; }hsring;
status sinsert(hstring s,int pos,hstring t){ if(pos<1 pos>s.length+1) return error; if(t.length){ if(!(s.ch=(char*)realloc(s.ch,(s.length+t.length) *sizeof(char))) exit(overflow); for(i=s.length-1;i>pos-1;--i) s.ch[i+t.length]=s.ch[i]; s.ch[pos-1..pos+t.length-2]=t.ch[0..t.length-1] s.length+=t.length; return ok;
status sinsert(hstring s,int pos,hstring t){ if(pos<1 || pos>s.length+1) return error; if(t.length){ if(!(s.ch=(char*)realloc(s.ch,(s.length+t.length) *sizeof(char))) exit(overflow); for(i=s.length-1;i>pos-1;--i) s.ch[i+t.length]=s.ch[i]; s.ch[pos-1..pos+t.length-2]=t.ch[0..t.length-1]; s.length+=t.length; } return ok; }