Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct nodo
- {
- struct nodo * siguiente;
- int dato;
- }nodo;
- typedef struct fila
- {
- nodo * primero; //es la lista que conocemos;
- nodo * ultimo; //es el ultimo;
- }fila;
- void inicFila(fila * unaFila);
- nodo * inicLista();
- void mostrarFila(fila * unaFila);
- void mostrarLista(nodo * lista);
- nodo * crearNodo(int dato);
- nodo * buscarUltimoLista(nodo * lista);
- nodo* agregarAlFinal(nodo* lista,nodo* nuevoNodo);
- void agregarFila(fila * unaFila, int dato);
- int extraer(fila * unaFila);
- nodo * borrarPrimero (nodo * lista);
- void vaciarFila(fila * unaFila);
- int main()
- {
- fila unaFila;
- inicFila(&unaFila);
- int dato = -1;
- vaciarFila(&unaFila);
- agregarFila(&unaFila,10);
- agregarFila(&unaFila,5);
- agregarFila(&unaFila,15);
- mostrarFila(&unaFila);
- printf("\n");
- vaciarFila(&unaFila);
- /*
- dato = extraer(&unaFila);
- mostrarFila(&unaFila);
- printf("\n");
- dato = extraer(&unaFila);
- mostrarFila(&unaFila);
- printf("\n");
- dato = extraer(&unaFila);
- mostrarFila(&unaFila);
- printf("\n");.
- */
- return 0;
- }
- void inicFila(fila * unaFila)
- {
- unaFila->primero = inicLista();
- unaFila->ultimo = inicLista();
- }
- nodo * inicLista()
- {
- return NULL;
- }
- void mostrarFila(fila * unaFila)
- {
- mostrarLista(unaFila->primero);
- }
- void mostrarLista(nodo * lista)
- {
- nodo * seg = lista;
- while (seg)
- {
- printf("- %d -",seg->dato);
- seg=seg->siguiente;
- }
- }
- nodo * crearNodo(int dato)
- {
- nodo * nuevoNodo;
- nuevoNodo = (nodo*)malloc(sizeof(nodo));
- nuevoNodo->dato = dato;
- nuevoNodo->siguiente = NULL;
- return nuevoNodo;
- }
- void agregarFila(fila * unaFila, int dato)
- {
- nodo * nuevoNodo = crearNodo(dato);
- if (unaFila->primero == NULL)
- {
- unaFila->primero = nuevoNodo;
- }
- else
- {
- unaFila->primero = agregarAlFinal(unaFila->primero,nuevoNodo);
- }
- unaFila->ultimo=nuevoNodo;
- }
- nodo* agregarAlFinal(nodo* lista,nodo* nuevoNodo)
- {
- nodo* seg=lista;
- if(lista==NULL)
- {
- lista=nuevoNodo;
- }
- else
- {
- seg= buscarUltimoLista(lista);
- seg->siguiente=nuevoNodo;
- }
- return lista;
- }
- nodo * buscarUltimoLista(nodo * lista)
- {
- nodo * ultimo;
- if (lista == NULL)
- {
- ultimo = NULL;
- }
- else
- {
- nodo * seguidora = lista;
- while (seguidora->siguiente !=NULL)
- {
- seguidora = seguidora->siguiente;
- }
- ultimo = seguidora;
- }
- return ultimo;
- }
- int extraer(fila * unaFila)
- {
- int extraido = -1;
- if (unaFila->primero !=NULL)
- {
- extraido = unaFila->primero->dato; //copio el dato
- //ahora a borrarlo
- //borra y avanzo al segundo, ese segundo, lo actualizo
- //en la variable primero
- unaFila->primero = borrarPrimero(unaFila->primero);
- if (unaFila->primero == NULL)
- {
- unaFila->ultimo = NULL;
- }
- }
- return extraido;
- }
- nodo * borrarPrimero (nodo * lista)
- {
- nodo * aBorrar = lista;
- if (lista!=NULL)
- {
- lista = lista->siguiente;
- free (aBorrar);
- }
- return lista;
- }
- void vaciarFila(fila * unaFila)
- {
- int borrado = 0;
- if (unaFila->primero!=NULL)
- {
- printf("INICIO FILA\n");
- while (unaFila->primero!=NULL)
- {
- borrado = extraer(unaFila);
- printf("estoy borrando -> %d\n",borrado);
- }
- printf("FIN FILA\n");
- }
- else
- {
- printf("NO HAY FILA\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement