guarda devi usare un grafo come struttura dati per rappresentare le adiacenze, altrimenti non ne esci piu, adesso non ho molto tempo ma ho degli esempi in C che puoi facilmente utilizzare.

una struttura base che ti puo andare bene puo essere questa:

typedef struct triangolo{

char *nome;
int visited; /*Per la visita sui triangoli...*/
struct lista_adiacenze * lista_adc; /*Lista di adiacenza del triangolo corrente*/

}triangolo;

typedef struct lista_adiacenze{
struct triangolo* adiacente; /*Il triangolo adiacente*/
struct lista_adiacenze* next; /*prossimo elemento nella lista di adiacenza*/
struct lista_adiacenze* prev; /*precedente elemento della lista di adiacenza*/
}lista_adiacenze;

http://it.wikipedia.org/wiki/Grafo


comunque ci sarebbe molto altro che si potrebbe fare per rendere il tutto piu veloce...questo è solo l'inizio