① 堆串属于顺序存储
堆串的本质还是顺序存储,只不过内存是动态分配的。
定长顺序存储结构和堆分配存储结构都是顺序存储结构,它们的主要区别是前者的串长是固定的。后者的串长是动态串的定长顺序存储结构的缺点是限定了串的长度,若超出长度则约定截断堆分配存储表示解决上面的问题,它动态分配串值得存储空间。
串值共享的存储空间称之为堆,串的块链存储,表示该存储结构为链式存储结构,存储密度=串值所占的储存位/实际分配的存位块链结构。
是结构中包含头指针、尾指针、当前串长度的一种结构使用块链结构的目的是为了提高存储密度。串的堆存储结构,与定长顺序串的存储结构类似,都是用一维数组地址连续的存储单元存储串的字符序列,不同的是堆串的存储空间是在程序执行过程中动态分配的。

定长顺序存储结构和堆分配存储结构都是顺序存储结构,它们的主要区别是前者的串长是固定的,后者的串长是动态串的定长顺序存储结构的缺点是限定了串的长度,若超出长度则约定截断堆分配存储表示解决上面的问题,它动态分配串值得存储空间。
② C语言(数据结构)怎么用顺序存储的串的0号单元存放串长度
char里面放的是字符还是数字,是编程者决定的。如果写SString[0]=8,存的就是数字;如果写SString[0]='8',存的就是字符,也就是数字8的ASIIC值
③ 数据结构中定长顺序串的存储表示
这是C里面惯用的方式,在变长的类型变量里为了确定其长度,通常在首部存入长度信息。
不过你这里的S[0] 肯定不会在定义后就自动的写上值的,应该是SString相关的操作函数会来维护其第一位的长度信息。
④ 假设串采用定长顺序存储结构
#include <stdio.h>
int STRCMP(char *p, char *q)
{
while(*p == *q && *p != '\0'){
p++;
q++;
}
return *p - *q;
}
int main()
{
char str1[128];
char str2[128];
int n;
printf("input str1:\n");
scanf("%s", str1);
printf("input str2:\n");
scanf("%s", str2);
n = STRCMP(str1,str2);
printf("%d", n);
putchar('\n');
return 0;
}