int CPUBus::write_pq_to_logfile(FILE *_dest) { int res = 0; if(m_s.pq_valid) { res = fprintf(_dest, "v"); } else { res = fprintf(_dest, " "); } if(res<0) { return -1; } if(is_pq_empty()) { res = fprintf(_dest, "e"); } else { res = fprintf(_dest, " "); } if(res<0) { return -1; } if(fprintf(_dest, " ") < 0) { return -1; } uint idx = get_pq_cur_index(); for(uint i=0; i<get_pq_cur_size(); i++) { if(fprintf(_dest, "%02X ", m_s.pq[idx]) < 0) { return -1; } idx = (idx+1)%CPU_PQ_SIZE; } return 0; }
struct pq_element priority_dequeue(struct pq_element edge_queue[MAXSIZE], int * N) { struct pq_element temp; int i; if (!is_pq_empty(edge_queue, N)) { temp.V1 = edge_queue[0].V1; temp.V2 = edge_queue[0].V2; temp.weight = edge_queue[0].weight; for (i = 0; i < *N; i++) { edge_queue[i] = edge_queue[i + 1]; } (*N)--; } else { temp.V1 = -9999; temp.V2 = -9999; temp.weight = -9999; } return temp; }