数据结构

位置:IT落伍者 >> 数据结构 >> 浏览文章

数据结构考研分类复习真题 第四章 答案[16]


发布日期:2022年09月09日
 
数据结构考研分类复习真题 第四章 答案[16]

[题目分析]本题是字符串的插入问题要求在字符串s的pos位置插入字符串t首先应查找字符串s的pos位置将第pos个字符到字符串s尾的子串向后移动字符串t的长度然后将字符串t复制到字符串s的第pos位置后

对插入位置pos要验证其合法性小于或大于串s的长度均为非法因题目假设给字符串s的空间足够大故对插入不必判溢出

void insert(char *schar *tint pos)//将字符串t插入字符串s的第pos个位置

{int i=x=; char *p=s*q=t; //pq分别为字符串s和t的工作指针

if(pos<) {printf(pos参数位置非法\n);exit();}

while(*p!=\&&i<pos) {p++;i++;} //查pos位置若pos小于串s长度则查到pos位置时i=pos

if(*p == /) {printf(%d位置大于字符串s的长度pos);exit();}

else //查找字符串的尾

while(*p!= /) {p++; i++;}//查到尾时i为字符\的下标p也指向\

while(*q!= \) {q++; x++; } //查找字符串t的长度x循环结束时q指向\

for(j=i;j>=pos ;j){*(p+x)=*p; p;}//串s的pos后的子串右移空出串t的位置

q; //指针q回退到串t的最后一个字符

for(j=;j<=x;j++) *p=*q; //将t串插入到s的pos位置上

[算法讨论] 串s的结束标记(\)也后移了而串t的结尾标记不应插入到s中

[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []

               

上一篇:数据结构考研分类复习真题 第四章 答案[1]

下一篇:数据结构考研分类复习真题 第四章 答案[15]