Salve ragazzi.......Devo cancellare da una lista doppiamente puntata gli elementi negativi----
Ho un problema quando vado a compilare con il dev c++ che mi da alcuni errori che nn riesco a risolvere....
il problema credo che stia nella struttura struct elimina_neg,poichè senza di essa l'esercizio mi fa inserire i valori (cioè interi) e me li visualizza...
Vi prego aiutatami che ho un esame a breve...
Grazie
#include<stdio.h>
#include<malloc.h>
struct el {struct el *prev;int inf; struct el *next;};
struct el *crea_lista();
void visualizza_lista(struct el*p);
struct el *elimina_neg(struct el*p);
int main() {
struct el*lista;
int valore;
lista=crea_lista();
visualizza_lista(lista);
printf("\nInserisci elemento da inserire: ");
scanf("%d",&valore);
elimina_neg(lista);
visualizza_lista(lista);
}
struct el*crea_lista(){
struct el*p,*punt;
int i,n;
printf("\nSpecificare il numero di elementi: ");
scanf("%d",&n);
if (n==0)
p=NULL;
else {
p=(struct el*)malloc(sizeof(struct el));
printf("\nInserisci il 1 valore: ");
scanf("%d",&p->inf);
punt=p;
p->prev=NULL;
for (i=2; i<=n; i++)
{
punt->next=(struct el*)malloc(sizeof(struct el));
punt->next->prev=punt;
punt=punt->next;
printf("\nInserisci il %d elemento: ",i);
scanf("%d",&punt->inf);
}
punt->next=NULL;
}
system("pause");
return (p);
}
void visualizza_lista(struct el*p)
{
printf("\n lista --->");
while(p!=NULL)
{
printf("%d", p->inf);
printf("---->");
p=p->next;
}
printf("NULL\n\n");
system("pause");
}
struct el *elimina_neg(struct el*p)
{
struct el*app;
while (p!=NULL){
if p->inf<0
{
app=p->next;
if p->prev!=NULL
{
p=p->prev;
p->next=app;
app->prev=p;
p=p->next;}
else
{
p=app;
app->prev=NULL;
p=p->next;}
}
}
system("pause");
return (p);
}