void menu(paciente * p, int * c){ int opcion; do{ printf("\n\nElija una de las siguientes opciones\n\n"); printf("1.- Incorporar paciente\n"); printf("2.- Ver disponibilidad de una cama\n"); printf("3.- Dar de alta a paciente\n"); printf("4.- Mostrar pacientes\n"); printf("5.- Ver numero de camas disponibles y ocupadas\n"); printf("0.- Salir\n"); scanf("%d", &opcion); if(opcion == 1) incorporarPaciente(p, c); else if(opcion == 2) disponibilidad(p, c); else if(opcion == 3) quitar(p, c); else if(opcion == 4) mostrar(p, c); else if(opcion == 5) printf("\nCamas ocupadas: %d disponible: %d", ocupado, cama_size - ocupado); else if(opcion == 0) printf("Adios\n"); else printf("\nOpcion Invalida\n"); } while(opcion != 0); }
void eliminarRegistro(Pagina* actual, tipoClave cl, int* encontrado) { int k; if (actual != NULL) { *encontrado = buscarNodo(actual, cl, &k); if (*encontrado) { if (actual->ramas[k-1] == NULL) /* es un nodo hoja */ quitar(actual, k); else { sucesor(actual, k); /* se elimina la clave sucesora en su nodo */ eliminarRegistro(actual->ramas[k], actual->claves[k], encontrado); } } else { eliminarRegistro(actual->ramas[k], cl, encontrado); } /* Las llamadas recursivas devuelven control a este punto. Se comprueba el número de claves del nodo descendiente, desde el nodo actual en la ruta de búsqueda seguida. */ if (actual->ramas[k] != NULL) if (actual->ramas[k]->cuenta < m/2) restablecer(actual,k); } else *encontrado = 0; }
void * consumidor() { while(1) { quitar(); sleep(1); } }
void *albannil(void *n) { int ladrillos; int *mn = (int *) n; int mi_nombre = *mn; int cogidos = 0; while(get_puestos() < TOTAL) { sem_wait(&albaforo); ladrillos = rand() % 10 + 1; cuenta_ladrillos(); printf("%i:\tQuiero %i ladrillos.\tCojo %i\n", mi_nombre, ladrillos, cogidos = quitar(ladrillos)); sem_post(&albaforo); construye(cogidos); } return NULL; }
/* * Programa principal */ int main(void) { char *nombre[] = { "Rosa", "María", "Pepe", "Carlos", "Juan", "Antonio", NULL }; int i; TipoCola colaPeluqueria; TipoElemento *cliente; /* Dar valor a los miembros de la cola */ crearVacia(&colaPeluqueria); /* Insertar clientes */ printf("\n"); for (i=0; NULL!=nombre[i]; i++) { cliente=malloc(sizeof(struct Cliente)); if (NULL!=cliente) { strcpy(cliente->nombre,nombre[i]); insertar(&colaPeluqueria,*cliente); printf("ha llegado un cliente de nombre %s...\n", nombre[i]); } } /* Extraer clientes */ printf("\n"); cliente=primero(colaPeluqueria); while (NULL!=cliente) { printf("se sirve al cliente de nombre %s...\n", cliente->nombre); quitar(&colaPeluqueria); cliente=primero(colaPeluqueria); } return (0); }
int main() { struct nodo * pila; struct nodo * cola; struct nodo * lista; struct nodo nodo1; struct nodo nodo2; struct nodo nodo3; struct nodo nodo4; struct nodo * aux; nodo1.val=1; nodo2.val=2; nodo3.val=3; nodo4.val=4; //pila printf("-- pila --\n"); init(&pila); push(&pila, &nodo1); push(&pila, &nodo2); push(&pila, &nodo3); while(aux=pop(&pila)) printf("%i\n",(*aux).val); //cola printf("-- cola --\n"); init(&cola); push(&cola, &nodo1); push(&cola, &nodo2); push(&cola, &nodo3); while(aux=unqueue(&cola)) printf("%i\n",(*aux).val); //lista printf("-- lista --\n"); init(&lista); agregar(&lista,&nodo1,0); agregar(&lista,&nodo3,1); agregar(&lista,&nodo2,1); aux=quitar(&lista,1); printf("%i\n",(*aux).val); while(aux=quitar(&lista,0)) printf("%i\n",(*aux).val); //lista misc printf("-- lista misc --\n"); init(&lista); agregar(&lista,&nodo1,0); agregar(&lista,&nodo3,1); agregar(&lista,&nodo2,1); agregar(&lista,&nodo4,3); intercambiar(&lista, 1, 3); printf("la lista tiene %i items\n",len(&lista)); while(aux=pop(&lista)) printf("%i\n",(*aux).val); printf("la lista tiene %i items\n",len(&lista)); //lista misc printf("-- lista ordenar --\n"); init(&lista); push(&lista, &nodo3); push(&lista, &nodo1); push(&lista, &nodo4); push(&lista, &nodo2); printf("burbuja\n"); ordenar_burbujeo(&lista); mostrar(&lista); return 0; }