He realizado la siguiente lista enlazada, y no compila ya que me muestra:
Les agradezco su ayuda. Saludos.
Cita:
undefined reference to 'ver' undefined reference to 'eliminarElemento' id return exit status |
Código:
#include <stdio.h>
#include <stdlib.h>
struct lista
{
char caracter;
struct lista *sig;
} ;
typedef struct lista Lista;
typedef struct lista *ptrLista;
void ingresar (ptrLista *inicio, char letra);
void ver (ptrLista inicio);
void eliminarElemento (ptrLista *inicio, char letra);
void eliminar (ptrLista *inicio);
int main(int argc, char *argv[])
{
ptrLista inicio=NULL;
int eleccion=0; char letra;
while (eleccion!=5)
{
printf("-1-Para ingresar caracter a la lista\n-2-Para ver lista\n-3-Para eliminar un caracter de la lista\n-4-PAra eliminar lista\n-5-Para salir\n");
scanf("%d", &eleccion);
switch (eleccion)
{
case 1:
{
printf("Ingrese el caracter\n");
scanf("%c", &letra);
ingresar (& inicio, letra);
break;
}
case 2:
{
ver (inicio);
break;
}
case 3:
{
printf("Ingrese la letra que desea eliminar\n");
scanf("%c", &letra);
eliminarElemento(&inicio, letra);
break;
}
case 4:
{
eliminar (&inicio);
break;
}
case 5:
{
eleccion=5;
break;
}
}
}
system("PAUSE");
return 0;
}
void ingresar (ptrLista *inicio, char letra)
{
ptrLista nuevo, aux;
nuevo=(ptrLista)malloc(sizeof(Lista));
nuevo->caracter=letra;
nuevo->sig=NULL;
if(*inicio==NULL)
{
*inicio=nuevo;
return;
}
else
{ aux=*inicio;
while (aux!=NULL)
{
if(nuevo->caracter<aux->caracter)
{
nuevo->sig=aux;
aux=nuevo;
}
aux=aux->sig;
}
return;
}
void ver (ptrLista inicio)
{
if(!inicio)
{printf("Lista vacia\n\n");
return;}
else
{
printf("%c ", inicio->caracter);
if(inicio->sig!=NULL)
{
ver (inicio->sig);
} } }
void eliminarElemento (ptrLista *inicio, char letra)
{
ptrLista aux;
if(*inicio==NULL)
{
printf("No hay elementos en la lista\n");
return;
}
else
{
if((*inicio)->caracter== letra)
{
if((*inicio)->sig==NULL)
{
free (*inicio);
return;
}
else
{
aux=*inicio;
*inicio=(*inicio)->sig;
free (aux);
return;
}
}
else
{
if ((*inicio)->sig!=NULL)
{
eliminarElemento(&(*inicio)->sig, letra);
}
else
{
printf("No se encuentra el caracter en la lista\n");
return;
}
}
} }
}
void eliminar (ptrLista *inicio)
{
ptrLista aux;
aux=*inicio;
while (aux!=NULL)
{
*inicio=aux->sig;
free (aux);
aux=*inicio;
}
return; }