Salve a tutti...
Devo fare un esercizio con le liste che consiste nel cancellare tutti i numeri pari della lista.
In pratica se ho una lista di questo genere:
6 3 2 1
Deve risultare:
3 1
Il secondo consiste nel, date due liste, vedere se un elemento della lista 1 appartiene alla lista 2.
Chi mi puo' aiutare?
Primo: (nn ho proprio idea di dove partire per cancellare un elemento)
codice:
#include <stdio.h>
#include <malloc.h>

using namespace std;

struct nodo 
{
	int info;
	nodo* next;
};

nodo* Crea_lista();
void Visualizza_lista(nodo*);
void Elimina(nodo*);

int main()
{
	nodo* lista=NULL; //creo la lista
    lista=Crea_lista();
    Visualizza_lista(lista);
	Elimina(lista);
	Visualizza_lista(lista);
	fflush(stdin);
	getchar();
	return 0;
}

nodo* Crea_lista()
{
	nodo *p,*punt;
	int i,n;
	printf("\nNumero elementi lista: ");
	scanf("%d",&n);
	if(n==0)
	{
		p=NULL;
        
	}
    else
    {
        //inserimento del primo valore
        p=(nodo*)malloc(sizeof(nodo));
        printf("\nInserisci il primo valore");
        scanf("%d",&p->info);
        punt=p;
    }
    for(i=2;i<=n;i++)
    {
        punt->next=(nodo*)malloc(sizeof(nodo));
        punt=punt->next; //scorri
        printf("\nInserisci il %d elemento: ",i);
        scanf("%d",&punt->info);
    }
    punt->next=NULL; 
	return p;
}

void Visualizza_lista(nodo* lista)
{
    printf(" Lista---> ");
	while(lista!=NULL)
	{
        printf("%d",lista->info);
		printf(" ---> ");
		lista=lista->next;
	}
    printf("NULL\n\n");
    getchar();
}

void Elimina(nodo* lista)
{
	nodo* scorri=lista;
    printf("LOL");
    while(scorri!=NULL)
	{
		if(scorri->info%2==0)
		{
			printf("Trovato elemento pari, eliminazione in corso");
			scorri=scorri->next;
			free(scorri);
			lista->next=scorri->next; 
		}
		scorri=scorri->next;
	}
}
L'altro l'ho risolto cosi' (metto solo la funzione che confronta)

codice:
int Confronta(nodo* lista,nodo* lista2)
{
	nodo* scorri1;
	nodo* scorri2;
	scorri1=lista;
	scorri2=lista2;
	while(scorri1!=NULL)
	{
        while(scorri2!=NULL)
        {
        	if(scorri2->info==scorri1->info)
                return scorri1->info;
            scorri2=scorri2->next;
        }
        scorri1=scorri1->next;
	}
return -1;
}
Grazie a chi mi vorrà aiutare