Está en la página 1de 2

Lista doble circular lista *crearLista(lista *inicio){ inicio = (lista*)malloc(sizeof(lista)); inicio -> sig = inicio; inicio -> ant

= inicio; inicio -> n = 0; return inicio; }

lista *insertar_final(lista *inicio, int valor){ lista *nuevo; nuevo = (lista*)malloc(sizeof(lista)); nuevo -> n = valor; nuevo -> sig = inicio; nuevo -> ant = inicio -> ant; inicio -> ant -> sig = nuevo; inicio -> ant = nuevo; inicio -> n = inicio -> n + 1; return inicio;} lista *eliminar_Final(lista *inicio){ lista *elegido; if(inicio -> n != 0){ elegido = inicio -> ant; inicio -> ant -> sig = inicio; inicio -> ant = elegido -> ant; inicio -> n = inicio -> n - 1; free(elegido);} else{ system("clear"); printf("lista vacia"); } ----------------------------------------------------------------------------------------------------------------------------------------------------LISTAS CIRCULARES SIMPLES lista *crearLista(lista *inicio){ lista *eliminar(lista *inicio, int valor){ inicio = (lista*)malloc(sizeof(lista)); lista *elegido, *aux, *anterior; inicio->sig = inicio; aux = inicio->sig; inicio->n=0; anterior = inicio; return inicio; while(aux != inicio){ } if(aux->n == valor){ elegido=aux; lista *insertar(lista *inicio, int valor){ anterior->sig = aux->sig; lista *nuevo ; free(elegido); nuevo = (lista*)malloc(sizeof(lista)); aux=inicio; if(inicio->sig ==inicio){ }else{ nuevo->n = valor; anterior = aux; inicio->sig=nuevo; aux = aux->sig; nuevo->sig=inicio; }} } inicio->n = inicio->n - 1; else{ return(inicio); } nuevo->n = valor; nuevo->sig = inicio->sig; inicio->sig = nuevo; //inicio->n=inicio->n+1; return inicio; }

lista *insertar_principio(lista *inicio, int valor){ lista *nuevo ; nuevo = (lista*)malloc(sizeof(lista)); nuevo -> n = valor; nuevo -> sig = inicio -> sig; inicio -> ant = inicio inicio -> ant = inicio; inicio -> sig = nuevo; nuevo -> sig -> ant = nuevo; inicio -> n = inicio -> n + 1; return inicio; } lista *eliminar_inicio(lista *inicio){ lista *elegido, *aux; if(inicio -> sig != inicio){ elegido = inicio -> sig; inicio -> sig = elegido -> sig; elegido -> sig -> ant = inicio; inicio -> n = inicio -> n - 1; free(elegido);} else{ printf("lista vacia"); }

*juntar nombre con rut* inicio actual=inicio; while(actual1 -> sig !=NULL && actual2 != NULL);{ listafinal*nuevalista; strcpy (nuevalista -> nombre, actual 2-> numero); nuevalist a-> numero = actual2 -> numero; iniciofinal = apilar (nuevalista) inicio1 = desapilar (actual1); inicio2 = desapilar(actual2); } *dar un regalo a cada trabajador sin ke se repita regalo int i=1; while(actual1 nombre != NULL && actual2 sig !=NULL){ strcpy(nuevo nombre, actual1 nombre); if(funcion_compara(inicio2,actual2 regalo,i) ==0){ nuevo regalo = actual regalo; inicio3 = apilar (nuevo); actual1 nombre = actual1 actual sig; } else{ actual2 regalo = actual2 sig; i++; } lista *funcion_compara(lista *inicio, int regalo, int i){ lista *comparador; int n; comparador = inicio; while (comparador sig != NULL){ for (n =1; n < i ; n++){ if(comparador regalo = = regalo){ return (1); } comparador = comparador sig; } } return ( 0 ); }

También podría gustarte