Esempio n. 1
0
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;
}