Código
// Funciones. // Podrian usar argumentos sin problemas haciendo un par de cambios void funcionA( ) { // ... } void funcionB( ) { // ... } // Definicion de la estructura typedef struct { int prioridad; void (*funcion)(void); } tarea; // Declaracion y llenado de la cola (tambien se puede hacer dinamicamente ) tarea tareas[2]; tareas[0].prioridad = 1; tareas[0].funcion = &funcionA; tareas[1].prioridad = 2; tareas[2].funcion = &funcionB; // Ordenar las tareas // Los bucles en este caso concreto son ridiculos, estan puestos para generalizar for ( i = 0; i < 1; i++ ) { for ( j = 1; j < 2; j++ ) { if ( tareas[ i ].prioridad < tareas[ j ].prioridad ) { tarea temp = tareas[ i ]; tareas[ i ] = tareas[ j ]; tareas[ j ] = tareas[ i ]; } } // Ejecucion por orden Boton { for ( i = 0; i < 2; i++ ) tareas[ i ].funcion( ); }
Con lo vago de tu código es complicado hacer una aproximación mayor.
Un saludo.