Include
#include
#include
typedef struct ElementoLista{
char * dato;
struct ElementoLista *siguiente;
}Elemento;
typedef struct ListaIdentificar{
Elemento *inicio;
Elemento *fin;
int tamano;
}Lista;
/*inicializa la lista*/
void incializacion(Lista *lista);
/*En caso de error devuelve -1 sino 0*/
int InsercionEnListaVacia(Lista *lista,char *dato);
/*insertar en inicio de la lista*/
int InsercionInicioLista(Lista *lista, char *dato);
/*insertar en fin de la lista*/
int InsercionFinLista(Lista *lista, Elemento *actual, char *dato);
/*insertar en X posicion de la lista*/
int InsercionLista (Lista *lista, char *dato, int pos);
/*elimina un elemento al inicio de una lista*/
int EliminarInicio(Lista *lista);
/*suprimir unelemento de una X posicion*/
int EliminarEnLista(Lista *lista, int pos);
/*muestra la lista entera*/
void visualizacion(Lista *lista);
/* destruir la lista */
void destruir(Lista * lista);
/* funcion menu */
int menu(Lista *lista,int *k);
//Una lista enlazada sin ningun elemento se llama lista vacía.
//Su puntero inicial tiene el valor NULL
//Si un la lista es de 1 solo elemento, el campo siguienteapunta a NULL
int main()
{
char eleccion;
char *nom;
Lista *lista;
Elemento *actual;
if ((lista = (Lista *) malloc (sizeof (Lista))) == NULL)
return -1;
if ((nom = (char *) malloc (50)) == NULL)
return -1;
actual = NULL;
eleccion = 'o';
incializacion(lista);
int k, pos;
while (eleccion!= 7){
eleccion = menu (lista, &k); switch (eleccion){
case 1:
printf ("Ingrese un elemento : ");
scanf ("%s", nom);
getchar ();
if (lista->tamano == 0)
InsercionEnListaVacia (lista, nom);
else
InsercionInicioLista (lista, nom);
printf ("%d elementos:ini=%s,fin=%s\n", lista->tamano,
lista->inicio->dato, lista->fin->dato); visualizacion(lista);
break;
case 2:
printf ("Ingrese un elemento: ");
scanf ("%s", nom);
getchar ();
InsercionFinLista (lista, lista->fin, nom);
printf ("%d elementos:ini=%s,fin=%s\n", lista->tamano,
lista->inicio->dato, lista->fin->dato);
visualizacion(lista);
printf("\n");
break; case 3:
printf ("Ingrese un elemento: ");
scanf ("%s", nom);
getchar ();
do{
printf ("Ingrese la posicion: ");
scanf ("%d", &pos);
}
while (pos < 1 || pos > lista->tamano);
getchar ();
if (lista->tamano == 1 || pos == lista->tamano){
k = 1; printf("-----------------------------------------------\n");
printf("!Error, posicion erronea u ocupado !\n");
printf("-----------------------------------------------\n");
break;
}
InsercionLista (lista, nom, pos);
printf ("%d elementos:ini=%s,fin=%s\n", lista->tamano,
lista->inicio->dato, lista->fin->dato);
visualizacion(lista); break;
case 4:
EliminarInicio (lista);
if (lista->tamano != 0)
printf ("%d elementos:ini=%s,fin=%s\n", lista->tamano,
lista->inicio->dato, lista->fin->dato);
else
printf ("lista vacia\n");
visualizacion (lista);
break;
case 5:
do{
printf ("Ingrese la posicion : "); scanf ("%d", &pos);
}
while (pos < 1 || pos > lista->tamano);
getchar ();
EliminarEnLista (lista, pos);
if (lista->tamano != 0)
printf ("%d elementos:ini=%s,fin=%s\n", lista->tamano,
lista->inicio->dato, lista->fin->dato);
else
printf ("lista vacia\n");...
Regístrate para leer el documento completo.