CARS
Functions

/home/nicola/Dropbox/Progetto SOL/CARS_terfram/src/heap.c File Reference

#include "heap.h"
#include <stdlib.h>

Functions

static unsigned int padre (int i)
static unsigned int sinistro (int i)
static void scambia (heap_elem_t *x, heap_elem_t *y)
static unsigned int min_padre_figli (heap_array_t *coda, unsigned int padre)
void reorganize_heap (heap_array_t *coda, unsigned int i)
int is_empty (heap_array_t *coda)
void enqueue (heap_array_t *coda, unsigned int elem, double dist)
int decrease_key (heap_array_t *coda, unsigned int elem, double new_dist)
int dequeue (heap_array_t *coda)

Detailed Description

Author:
Nicola Corti

Si dichiara che il contenuto di questo file e' in ogni sua parte opera originale dell' autore.


Function Documentation

int decrease_key ( heap_array_t coda,
unsigned int  elem,
double  new_dist 
)

Se un elemento e' presente nella coda di priorita', diminuisce il suo perso

Parameters:
[in,out]codapuntatore alla coda di priorita'
[in]elemindice dell'elemento nel grafo
[in]new_distnuovo peso da assegnare all'elemento
Return values:
1se l'elemento e' stato aggiornato
0se l'elemento non e' stato trovato nella coda

References heap_array::array, heap_elem::dist, heap_array::heap_size, heap_elem::label, and reorganize_heap().

Referenced by dijkstra().

int dequeue ( heap_array_t coda)

Rimuove l'elemento di peso minimo dalla coda di priorita'

Parameters:
[in,out]codapuntatore alla coda di priorita'
Return values:
il'indice nel grafo dell'elemento estratto

References heap_array::array, heap_array::heap_size, heap_elem::label, reorganize_heap(), and scambia().

Referenced by dijkstra().

void enqueue ( heap_array_t coda,
unsigned int  elem,
double  dist 
)

Inserisce un elemento nella coda di priorita'

Parameters:
[in,out]codapuntatore alla coda di priorita'
[in]elemindice dell'elemento nel grafo
[in]distpeso dell'elemento

References heap_array::array, heap_elem::dist, heap_array::heap_size, heap_elem::label, and reorganize_heap().

Referenced by dijkstra().

int is_empty ( heap_array_t coda)

verifica se la coda di priorita' e' vuota

Parameters:
[in]codapuntatore alla coda di priorita'
Return values:
0se la coda e' vuota
nun intero diverso da 0 se la coda non e' vuota

References heap_array::heap_size.

Referenced by dijkstra().

static unsigned int min_padre_figli ( heap_array_t coda,
unsigned int  padre 
) [static]

Funzione static per cercare il minimo fra il padre ed i figli all'interno della coda di priorita'

Parameters:
[in]codala coda di priorita
[in]padreindice del padre
Return values:
l'indicedel minimo fra il padre ed i 2 figli

References heap_array::array, heap_elem::dist, heap_array::heap_size, padre(), and sinistro().

Referenced by reorganize_heap().

static unsigned int padre ( int  i) [static]

Funzione static per ricavare l'indice del padre nella coda, a partire dall'indice del figlio

Parameters:
i[in] indice del nodo

Referenced by min_padre_figli(), and reorganize_heap().

void reorganize_heap ( heap_array_t coda,
unsigned int  i 
)

Funzione per riorganizzare la coda di priorita' dopo che sono state effettuate delle modifiche sulla stessa

Parameters:
[in,out]codala coda di priorita'
[in]iindice che indica rispetto a quale nodo deve essere effettuata la riorganizzazione

References heap_array::array, heap_elem::dist, heap_array::heap_size, min_padre_figli(), padre(), scambia(), and sinistro().

Referenced by decrease_key(), dequeue(), and enqueue().

static void scambia ( heap_elem_t x,
heap_elem_t y 
) [static]

Funzione static per scambiare due elementi nella coda di priorita'

Parameters:
[in,out]xprimo elemento
[in,out]ysecondo elemento

Referenced by dequeue(), and reorganize_heap().

static unsigned int sinistro ( int  i) [static]

Funzione static per ricavare l'indice del figlio nella coda, a partire dall'indice del padre

Parameters:
i[in] indice del nodo

Referenced by min_padre_figli(), and reorganize_heap().