struct pp *insert(struct pp *b,struct pp *c,int m)
{
struct pp *s1,*s2,*s3,*s4;
int i;
if(m<=0||m>n) return NULL;
else
{
s1=s4=b;
s3=c;
if(b==NULL)
{
b=s3;s3->next=NULL;}
for(i=1;i<m;i++)
s4=s4->next;
while((s4->num!=s1->num)&&s1->next!=NULL)
{
s2=s1;
s1=s1->next;
}
if(s4->num==s1->num)
{
if(s1==b)
{ b=s3;
s3->next=s1;
}
else
{
s2->next=s3;
s3->next=s1;
}
n=n+1;
}
free( s1);free(s4);s1=s4=NULL; return b;
} 运行的时候通过没问题 就是结果不对 但不释放s1跟s4就没问题;
插入的程序为什么不能释放s1跟s4 都是工具指针 而删除的程序运行没问题
删除的程序
struct pp *delete(struct pp *k,int m)
{
struct pp *s1,*s2,*s3;
int i;
if(k==NULL)
return NULL;
s1=s3=k;
for(i=0;i<m-1;i++)
s3=s3->next;
while(s3->num!=s1->num&&s1->next!=NULL)
{
s2=s1;
s1=s1->next;
}
if(s3->num==s1->num)
{
if(s1==k)
{
s1=s1->next;
k=s1;
}
else
{
s2->next=s1->next;
if(s1->next==NULL)
s2->next=NULL;
}
n=n-1;
printf("delete the number %d data:\n",m);
}
else
printf("no found\n");
free(s1);free(s3);s1=NULL;s3=NULL;
return k;
} 我不是根据内容来插入删除的, 根据节点的号码来
求高手赐教