【摘要】:有的用'\0'作为结束标记;有的不用'\0',而用额外定义的length变量来表示串长以及标记串的结束。本书的定义是,给串尾加上'\0'结束标记,同时也设定length,这样做虽然多用了一个单位的存储空间,但这是代码中用起来最方便的形式。其结构体定义如下:这种存储方式在使用时,需要用函数malloc()来分配一个长度为length、类型为char型的连续存储空间,分配的空间可以用函数free()释放掉。
1.定长顺序存储表示
一般不采取上一节代码注释1处的方式定义并初始化一个串,原因是仅仅以'\0'作为串结束的标记在求串长的时候需要扫描整个串,时间复杂度为O(n);不如额外定义一个变量专门来存储串的长度,这样求串长就变成了时间复杂度为O(1)的操作。
注意:不同的参考书对于串的结构体定义有所不同。有的用'\0'作为结束标记;有的不用'\0',而用额外定义的length变量来表示串长以及标记串的结束。本书的定义是,给串尾加上'\0'结束标记,同时也设定length,这样做虽然多用了一个单位的存储空间,但这是代码中用起来最方便的形式。
定长顺序存储表示结构体定义如下:
2.变长分配存储表示(www.daowen.com)
变长分配存储表示(又叫动态分配存储表示)方法的特点是,在程序执行过程中根据需要动态分配。其结构体定义如下:
这种存储方式在使用时,需要用函数malloc()来分配一个长度为length、类型为char型的连续存储空间(分配方法在绪论中已经讲过),分配的空间可以用函数free()释放掉。用函数malloc()分配存储空间如果成功,则返回一个指向起始地址的指针,作为串的基地址,这个地址由ch指针来指向;如果分配失败,则返回NULL。
通过对比以上两种存储结构的分配方法可以看出,变长分配存储表示方法有顺序存储结构的特点,操作中串长可根据需要来设定,更加灵活,因此在串处理的应用程序中更为常用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关2019版数据结构高分笔记的文章