I'm having trouble removing an element from the list. Here is the code:
#include<stdio.h>// colocar no esquininho do AVA ate amanha
#include<stdlib.h>
#define max 5
typedef struct info
{
int numero;
struct info* prox;
}Lista; //tipo de dado
Lista* inicializar()
{
return NULL;
}
Lista* inserir(Lista* prim,int valor)
{
Lista* novo;
novo=(Lista*)malloc(sizeof(Lista));
novo->numero=valor;
novo->prox=prim;
return novo;
}
void Imprima(Lista* prim)
{
while(prim!=NULL)
{
printf("\n%d\n",prim->numero);
prim=prim->prox;
}
}
Lista* retira(Lista* recebida, int v)
{
Lista* ant=NULL;
Lista* p=recebida;
while(p!=NULL && p->numero!=v)
{
ant=p;
p=p->prox;
}
if(p==NULL)
return recebida;
if(ant==NULL)
{
recebida=p->prox;
}
else
{
ant->prox=p->prox;
}
free(p);
return recebida;
}
main()
{
Lista* prim;
Lista* p;
int valor,resp,i,num;
prim=(struct info*)malloc(sizeof(struct info));
prim=inicializar();
for(i=0;i<max;i++)
{
printf("\nDigite um valor: ");
scanf("%d",&valor);
prim=inserir(prim,valor);
printf("\n\nGostaria de continuar 1 (sim) outro valor para nao: ");
scanf("%d",&resp);
if(resp!=1)
{
break;
}
}
Imprima(prim);
printf("Escolha um numero que queira remover: ");
scanf("%d",&num);
prim=retira(prim,num);
Imprima(p);
system("pause");
}