Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "listas_dobles.h"
- nodoDoble * inicListaDoble()
- {
- return NULL;
- }
- nodoDoble * crearNodoDoble(empleado unEmpleado)
- {
- nodoDoble * nuevoNodoDoble = (nodoDoble *)malloc(sizeof(nodoDoble));
- nuevoNodoDoble->anterior = NULL;
- nuevoNodoDoble->siguiente = NULL;
- nuevoNodoDoble->unEmpleado = unEmpleado;
- return nuevoNodoDoble;
- }
- nodoDoble * cargarNodoDoble()
- {
- empleado unEmpleado;
- printf("Ingrese el nombre del empleado\n");
- fflush(stdin);
- scanf("%s",&unEmpleado.NyA);
- printf("Ingrese el sueldo del empleado\n");
- fflush(stdin);
- scanf("%f",&unEmpleado.sueldo);
- nodoDoble * nuevoNodoDoble = crearNodoDoble(unEmpleado);
- return nuevoNodoDoble;
- }
- void mostrarEmpleado(empleado unEmpleado)
- {
- printf("Sueldo del empleado -> %f\n",unEmpleado.sueldo);
- printf("Nombre del empleado -> %s\n",unEmpleado.NyA);
- printf("*********************\n");
- }
- nodoDoble *agregarAlPpioNodoDoble( nodoDoble * listaDoble, nodoDoble * nuevoNodoDoble)
- {
- if (listaDoble == NULL)
- {
- listaDoble = nuevoNodoDoble;
- }
- else
- {
- listaDoble->anterior = nuevoNodoDoble; //viejo primero apunta ahora al nuevo primero
- nuevoNodoDoble->siguiente = listaDoble; //nuevo primero apunta ahora al nuevo segundo
- listaDoble = nuevoNodoDoble;
- }
- return listaDoble;
- }
- nodoDoble *agregarAlPpio2NodoDoble( nodoDoble * listaDoble, nodoDoble * nuevoNodoDoble)
- {
- nuevoNodoDoble->siguiente = listaDoble; //puede ser o no null pero no nos importa xq? xq no accedemos a un atributo
- if (listaDoble!=NULL)
- {
- listaDoble->anterior = nuevoNodoDoble;
- }
- return nuevoNodoDoble;
- }
- void mostrarListaDoble(nodoDoble * listaDoble)
- {
- nodoDoble * seguidora = listaDoble;
- while (seguidora!=NULL)
- {
- mostrarEmpleado(seguidora->unEmpleado);
- seguidora = seguidora->siguiente;
- }
- }
- void mostrarListaDobleFin(nodoDoble * listaDoble)
- {
- nodoDoble * ultimo = buscarUltimoListaDoble(listaDoble);
- if (ultimo!=NULL)
- {
- while (ultimo!=NULL)
- {
- mostrarEmpleado(seguidora->unEmpleado);
- ultimo = ultimo->anterior;
- }
- }
- }
- nodoDoble * buscarUltimoListaDoble(nodoDoble * listaDoble)
- {
- nodoDoble * seguidora = listaDoble;
- if (seguidora!=NULL)
- {
- while (seguidora->siguiente!=NULL)
- {
- seguidora = seguidora->siguiente;
- }
- }
- return seguidora;
- }
- nodoDoble * agregarListaDobleEnOrden(nodoDoble * listaDoble, nodoDoble * nuevoNodo)
- {
- if (listaDoble == NULL)
- {
- listaDoble = nuevoNodo;
- }
- else if (nuevoNodo->unEmpleado.sueldo < listaDoble->unEmpleado.sueldo)
- {
- listaDoble = agregarAlPpioNodoDoble(listaDoble,nuevoNodo);
- }
- else
- {
- nodoDoble * seguidora = listaDoble;
- while ((seguidora!=NULL) && (nuevoNodo->unEmpleado.sueldo > seguidora->unEmpleado.sueldo))
- {
- seguidora= seguidora->siguiente;
- }
- nuevoNodo->siguiente = seguidora;
- if (seguidora!=NULL)
- {
- nuevoNodo->anterior = seguidora->anterior;
- nodoDoble * anterior = seguidora->anterior;
- anterior->siguiente = nuevoNodo;
- seguidora->anterior = nuevoNodo;
- }
- else
- {
- nodoDoble * ultimo = buscarUltimoListaDoble(listaDoble);
- nuevoNodo->anterior = ultimo;
- ultimo->siguiente = nuevoNodo;
- }
- //seguidora->anterior->siguiente puede ser que C no lo tome
- }
- return listaDoble;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement