数据结构链串——字串的替换,不懂的地方
LinkStrNode *RepStr(LinkStrNode *s,int i,int j,LinkStrNode *t) //串替换
{
int k;
LinkStrNode *str,*p=s->next,*p1=t->next,*q,*r;
str=(LinkStrNode *)malloc(sizeof(LinkStrNode));
str->next=NULL;
r=str;
if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s))
return str;
for (k=0;k<i-1;k++)
{ q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data=p->data;q->next=NULL; //为什么这里q->next=NULL?
r->next=q;r=q;
p=p->next;
}
for (k=0;k<j;k++)
p=p->next;
while (p1!=NULL)
{ q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data=p1->data;q->next=NULL; //为什么这里q->next=NULL?
r->next=q;r=q;
p1=p1->next;
}
while (p!=NULL)
{ q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data=p->data;q->next=NULL; //为什么这里q->next=NULL?
r->next=q;r=q;
p=p->next;
}
r->next=NULL;
return str;
}
我的问题就是为什么字串的替换q->next=NULL?我觉得这句省略了也是可以的啊,而且字串的插入、求子串都没有这句,所以每次都把s链串不用删除的结点放入str链串中,每次为什么q的next又要置NULL?想不通这点,希望大家能指点指点。