//与定长顺序存储一样,仍以一组地址连续的存储单元存放串值字符序列,但他们的空间都是动态分配的
#include<stdio.h>
#include<stdlib.h>typedef struct
{
char *ch;
int length;
}HString;
void InitString(HString *T) //take care! T要初始化,T指向的结构体也要初始化
{
(*T).ch=NULL;
(*T).length=0;
}void StrAssign( HString *T, char *cha)
{
int i,j;
//char c;
if(!(*T).length)
{
free((*T).ch); //释放T原有空间
}
//for(i = 0, c = ch ;c ; ++i,++c) ; //求ch的长度i.
i = strlen(cha);
if(!i) //i = 0即长度为0.
{
(*T).ch = NULL;
(*T).length = 0;
}
else
{
if(!((*T).ch = (char *)malloc((i+1) * sizeof(char))))
{
exit(0);
}
for(j = 0; j < i; ++j )
{
(*T).ch[j] = cha[j];
}(*T).ch[ j ] = '\0' ;
(*T).length = i;
}
}void StrPrint(HString T)
{
int i;
for(i = 0; i < T.length ; ++i)
{
printf("%c",T.ch[i]);
}
printf("\n")
第四章(2).堆分配存储表示
最新推荐文章于 2022-10-26 15:25:04 发布