Rsk
09-02-2009, 19:19
Ragazzi ho un problema con questo codice, dovrebbe cancellare da una lista gli elementi maggiori di 11
int main(int argc, char *argv[])
{
int m[NR][NC]={3,58,4,7,
4,1,3,6,
15,11,6,1,
5,4,8,31
};
nodo *inizio=NULL;
int i,j;
for(i=0; i<NR; i++)
{
for(j=0; j<NC; j++)
{
if(i==j && primo(m[i][j])) inizio=makeFifo(inizio,m[i][j]);
if(i+j == NC-1 && primo(m[i][j])) inizio=makeFifo(inizio,m[i][j]);
}
}
printList(inizio);
nodo *p = inizio;
while(p)
{
if(p->info > 11) inizio=delete(inizio,p->info);
p=p->next;
}
printf("\n");
printList(inizio);
fflush(stdin);
getchar();
}
nodo * delete(nodo *inizio, int cosa)
{
int pos=0;
nodo *aux, *killer;
if(inizio->info == cosa)
{
killer=inizio;
inizio=inizio->next;
free(killer);
write(cosa,pos);
}
else{
aux=inizio;
while(aux->next->info !=cosa && aux)
{
aux=aux->next;
pos++;
}
if(aux)
{
killer=aux->next;
aux->next=killer->next;
free(killer);
write(cosa,pos);
}
else printf("Elemento Assente");
}
return (inizio);
}
purtroppo mi da errore sapete aiutarmi?
int main(int argc, char *argv[])
{
int m[NR][NC]={3,58,4,7,
4,1,3,6,
15,11,6,1,
5,4,8,31
};
nodo *inizio=NULL;
int i,j;
for(i=0; i<NR; i++)
{
for(j=0; j<NC; j++)
{
if(i==j && primo(m[i][j])) inizio=makeFifo(inizio,m[i][j]);
if(i+j == NC-1 && primo(m[i][j])) inizio=makeFifo(inizio,m[i][j]);
}
}
printList(inizio);
nodo *p = inizio;
while(p)
{
if(p->info > 11) inizio=delete(inizio,p->info);
p=p->next;
}
printf("\n");
printList(inizio);
fflush(stdin);
getchar();
}
nodo * delete(nodo *inizio, int cosa)
{
int pos=0;
nodo *aux, *killer;
if(inizio->info == cosa)
{
killer=inizio;
inizio=inizio->next;
free(killer);
write(cosa,pos);
}
else{
aux=inizio;
while(aux->next->info !=cosa && aux)
{
aux=aux->next;
pos++;
}
if(aux)
{
killer=aux->next;
aux->next=killer->next;
free(killer);
write(cosa,pos);
}
else printf("Elemento Assente");
}
return (inizio);
}
purtroppo mi da errore sapete aiutarmi?