Código:
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo
{
char elemento;
struct nodo *siguiente;
struct nodo *anterior;
} NODOLISTA;
typedef NODOLISTA *PtrNodo;
typedef NODOLISTA *Lista;
void insertar(Lista*, char);
void mostrar(Lista);
main()
{
Lista lista=NULL;
insertar(&lista,'Juan');
insertar(&lista,'Homero');
mostrar(lista);
getchar();
return 0;
}
void insertar(Lista *lista, char nombre)
{
PtrNodo nuevo, actual;
nuevo = (PtrNodo)malloc(sizeof(NODOLISTA));
nuevo->elemento = nombre;
actual = *lista;
if(actual)
{
while(actual->anterior)
{
actual = actual->anterior;
}
}
if(!actual || actual->elemento > nombre)
{
nuevo->siguiente = actual;
nuevo->anterior = NULL;
if(actual)
{
actual->anterior = nuevo;
}
if(!*lista)
{
*lista = nuevo;
}
}
else
{
while(actual->siguiente &&actual->siguiente->elemento <= nombre)
{
actual = actual->siguiente;
}
nuevo->siguiente= actual->siguiente;
actual->siguiente = nuevo;
nuevo->anterior = actual;
if(nuevo->siguiente)
{
nuevo->siguiente->anterior = nuevo;
}
}
}
void mostrar(Lista lista)
{
PtrNodo nodo = lista;
if(!lista)
{
printf("\"La Lista esta Vacia\"");
}
else
{
while(nodo->anterior)
{
nodo = nodo->anterior;
}
while(nodo)
{
printf("-> %s", nodo->elemento);
nodo = nodo->siguiente;
}
}
printf("\n");
}
o alguien no tiene alguna funcion de insertar de una lista de la siguiente forma
insertar(lista,'juan');