brygar
Registrado: 28 Jul 2006 Mensajes: 28
| Publicado: 30/08/2006 10:04 am | | | Título: Problema al introducir o libera ... [SOLUCIONADO] |
| Os dejo las funciones para introducir y liberar elementos de una cola para ver si me podeis decir que puede fallar, el problema creo que es a la hora de liberar porque introducir los elementos los introduce o al menos los primeros. Se trata de un array de punteros y cada puntero apunta a una cola, o eso pretendo.
La funcion que introduce elementos es:
| Código: | COLA* intro(COLA **v, int i, LLAMADA *llam, int j, int k, int ops) { int m[ops]; COLA *cab = v[i]; if ( v[i]== NULL) { v[i]=(COLA *) malloc (sizeof(COLA)); if(v[i] == NULL){ printf("Error 8: error en la reserva dinámica de memoria"); getchar(); exit(1); } v[i]->sig = NULL; v[i]->tDur = llam[j].dur; v[i]->tEnt = k; v[i]->tEsp = k - llam[j].ent; v[i]->oper = i; v[i]->tFin = k + v[i]->tDur; m[i] = v[i]->tFin; return (v[i]); } else { while ( v[i]->sig != NULL) { v[i]=v[i]->sig; } v[i]->sig = (COLA *) malloc (sizeof(COLA)); if(v[i]->sig == NULL){ printf("Error 8: error en la reserva dinámica de memoria"); getchar(); exit(1); } v[i] = v[i]->sig; v[i]->sig = NULL; v[i]->tDur = llam[j].dur; v[i]->tEnt = k; v[i]->tEsp = k - llam[j].ent; v[i]->oper = i; v[i]->tFin = m[i] + v[i]->tDur; m[i] = v[i]->tFin; return (cab); } } |
Y la funcion que libera es:
| Código: | COLA* libera(COLA **v, int k, int ops, int in) { int w = 0; COLA *aux; FILE* salida; while ( w < ops ) { if (v[w]!= NULL) { salida = fopen("salida.txt", "a"); if(salida == NULL) { printf("Error 6: no se puede escribir en el fichero de salida"); exit(1); }
if (v[w]->tFin == k) { v[w]->Evento = 'F'; fprintf(salida, "%c\t%d\t%d\t%d\t%d\n", v[w]->Evento, v[w]->tFin, (v[w]->oper + 1), v[w]->tEnt, v[w]->tEsp); fseek(salida,0,2); if (fclose(salida)!=0) { printf( "Problemas al cerrar el fichero\n" ); } aux = v[w]->sig; in--; } } w++; } return aux; }
|
|
|