Exemplo n.º 1
0
void dijkstra(struct Matrix_Graph *mat_graph, struct Point_Graph *poi_graph, \
				int source)
{
	struct HeapNode *minNode;
	struct Heap heap;
	struct Edge *edge;

	initHeap(&heap, poi_graph, source);
	heapSort(heap.heapNode, heap.heap_size, \
			sizeof(struct HeapNode), compare);

	while (heap.heap_size != 0) {
		minNode = (struct HeapNode *)extractTop(heap.heapNode, \
			&(heap.heap_size), sizeof(struct HeapNode), compare);
		edge = poi_graph->node[minNode->to].start;
		while (edge) {
			decrease_key(mat_graph, &heap, source, minNode->to, edge);
			edge = edge->next;
		}
	}
}
Exemplo n.º 2
0
 void threadProc() {
     _TaskType task;
     while (extractTop(task)) {
         task();
     }
 }