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;
}
一维 二维都可以
删除其后相同元素并前置
以前做的别的没有了
#includestdio.h
#define M 2
#define N 5
void main()
{
int c[M][N];
int i,j,m,n;
printf("请输入%d行%d列矩阵\n",M,N);
for(i=0;iM;i++)
{
for(j=0;jN;j++)
scanf("%d",c[i][j]);
}
printf("C[M][N]:\n");
for(i=0;iM;i++)
{
for(j=0;jN;j++)
printf("%8d",c[i][j]);
putchar('\n');
}
for(m=0;mM;m++)
{
for(n=0;nN;n++)
{
for(i=0;iM;i++)
{
for(j=0;jN;j++)
{
if(m==in==j);
else
if(c[m][n]==c[i][j])
{
c[i][j]=0;
}
}
}
}
}
for(i=0;iM;i++)
{
for(m=0;mN;m++)
for(j=0;jN-1;j++)
if(c[i][j]==0)
{
c[i][j]=c[i][j+1];
c[i][j+1]=0;
}
}
printf("C[M][N]x:\n");
for(i=0;iM;i++)
{
for(j=0;jN;j++)
printf("%8d",c[i][j]);
putchar('\n');
}
}
楼主的意思是在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]);
}
}