void strinit(HString s); //置s为空串
int strlen(HString s); //求串s的长度
void strcpy(HString to,HString from); //将串from复制到串to
void streat(HString to,HString from); //将串from联接到串to的末尾
int strcmp(HString s1,HString s2);
//比较串s1和s2的大小,当s1<s2,s1=s2或s1>s2时,
//返回值小于0,等于0或大于0
HString substr(HString s,int i,int m);
//返回串S中从第i(0≤i≤strlen(s)-m)个字符起长度为m的子串阅读下列算法f32,并回答问题:
(1)设串S="abcdabcd",T="bcd",V="bcda",写出执行f32(S,T,V)之后的S;
(2)简述算法f32的功能。
void f 32(HString S,HString T,HString V){
int m,n,pos,i;
HString news;
strinit(news);
n=strlen(S);
m=strlen(T);
pos=i=0;
while(i<=n-m){
if(strcmp(substr(S,i,m),T)!=0)i++;
else{
strcat(news,substr(S,pos,i-pos));
strcat(news,V);
pos=i=i+m;
}
}
strcat(news,substr(S,pos,n—pos));
strcpy(S,news);
}
(1)如果采用如下方式定义一维字符数组:const inc maxSize-30;char a[maxSize] ;则这种数组在程序执行过程中不能扩充。
(2)如果采用如下方法定义一维字符数组:const int maxSLze=30;char*a=new char[maxSize] ;则这种数组在程序执行过程中不能扩充。
(3)数组是一种静态的存储空间分配,就是说,在程序设计时必须预先定义数组的数据类型和存储空间大小,由编译程序在编译时进行分配。
(4)二维数组可以视为数组元素为一维数维的一维数组。因此,二维数组是线性结构。
(5)数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也本是树形的。
(6)顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用。
(7)在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻。
(8)顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问。
(9)n阶三对角矩阵总共n2个矩阵元素中最多只有3n一2个非零元素,因此它是稀疏矩阵。
(10)插入与删除操作是数据结构中最基本的两种操作,因此这两种操作在数组中也经常使用。
(11)使用三元组表示稀疏矩阵中的非零元索能节省存储空间。
(12)用字符数组存储长度为n的字符串,数组长度至少为n+1.
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!