重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
void delete_student(student *L,long studentnum)
成都创新互联主要从事成都网站制作、成都网站建设、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务碌曲,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
{
int flag = 0;
student * p = L,*q = p-next;
while(q)
{
if(q-number == studentnum)
{
flag = 1;
q = q-next;
break;
}
else
{
p = q;
q = q-next; /*下一个结点*/
}
}
if(flag == 0)
printf("删除学生失败,不存在这个学号的学生\n");
else{
printf("删除学生成功! \n ");
}
}
1. 函数开始的时候这两句话没有意义
p=(stud *)malloc(sizeof(stud));
q=(stud *)malloc(sizeof(stud));
你只是用了这两个指针,为它们分配空间一是没必要,二是内存会泄露
2. 看你的代码应该是有头结点的链表,搜索的时候p=head;p初始化为了head,指向了头结点,搜索的时候应该从p-next开始,而你用的while((p!=NULL)(strcmp(p-name,N)!=0)),应该用p-next!=NULL。而且后面删除的时候也删除的是p-next,所以比较的话也应该用p-next:strcmp(p-next-name,N)
#includestdio.h
void del(char * s,int n,int len)
{char *p;
s+=n;
for(p=s+len;*s++=*p++;);
}
int main()
{char s[]="apple";
if(s==NULL||n0)
{printf("error");
return 0;
}
del(s,2,2);
puts(s);
return 0;
}
楼主的意思是在str1中删除str2中出现的字符?那么改成:
#includestdio.h
void main ()
{
char str1[9]={'t','i','n','m','f','g','y','f','s'};
char str2[3]={'A','s','g'};
int i,k,l;
for(i=0;i9;i++)
{
l=0;
for(k=0;k3;k++)
{
if (str1[i]=str2[k])
{l=1;break;}
}
if l!=1
printf("%c",str1[i]);
}
}