在创建链接列表以便在元素之后和元素之前添加一些数据时,我使用了以下函数,正如我从教程中学到的:
struct node *addafter(struct node *start,int data,int item)
{
struct node *tmp,*p;
p=start;
while(p!=NULL)
{
if(p->info==item)
{
tmp=(struct node *)malloc(sizeof(struct node));
tmp->info=data;
tmp->link=p->link;
p->link=tmp;
return start;
}
p=p->link;
}
printf("Item Not Found:\n");
return start;
}
struct node *addbefore(struct node *start,int data,int item)
{
struct node *tmp,*p;
if(item==start->info)
{
tmp=(struct node *)malloc(sizeof(struct node));
tmp->link=start->link;
tmp->info=data;
start->link=tmp;
return start;
}
p=start;
while(p->link!=NULL)
{
while(p->link->info==item)
{
tmp=(struct node *)malloc(sizeof(struct node));
tmp->info=data;
tmp->link=p->link;
p->link=tmp;
return start;
}
p=p->link;
}
printf("Item Not Found:\n");
return start;
}
我的疑问是在 addafter 函数中为什么停止条件是 p!=NULL 并且在 addbefore 函数的情况下它的 p->link!=NULL?..请任何人解释一下!