/**************************LIISSSTEEEEEE********/ typedef bool boolean; typedef int Nodo;//nodo è l'indice nel vettore dei nodi dove trovo // il puntatore alla cella di quel nodo //la lista di nodi è una lista di interi //che sono gli indici (nel vettore dei nodi) dei nodi adiacenti //infatti la label associata a ogni elemento è //l'indice del nodo adiacente nel vettore dei nodi del grafo /*****Cella della lista****************/ class Cella_l{ public: void setlabel(Nodo); Nodo getlabel(); void setsucc(Cella_l *); Cella_l * getsucc(); void setprec(Cella_l *); Cella_l * getprec(); private: Nodo label;//contiene il nodo adiacente Cella_l * prec; Cella_l * succ; }; typedef Cella_l * posizione; /* Posizione è un puntatore a cella */ /***********************/ class Lista{ public: void crealista(); boolean listavuota(); Nodo leggilista(posizione); void scrivilista(Nodo, posizione); posizione primolista(); boolean finelista(posizione); posizione succlista(posizione); posizione preclista(posizione); void inslista(Nodo,posizione &); void canclista(posizione &p); private: posizione lista;//aggancio }; /***************+grafi****************/ typedef int tipoelem; // tipoelem dei nodi del grafo: è il tipoelem della specifica // è la label associata ad ogni nodo del grafo const int max=20;// vettoredei nodi e adiacenti /********************/ class Cella_g { public : tipoelem getlabel(); void setlabel(tipoelem); private: tipoelem label; }; /**************************/ class Grafo { public: void creagrafo(); boolean grafovuoto(); void insnodo(Nodo ); /* passo il nome del nodo da inserire e lui va in quel indice e alloca la cella di quel nodo*/ void insarco(Nodo,Nodo); void cancnodo(Nodo); void cancarco(Nodo,Nodo); Lista adiacenti(Nodo); boolean esistenodo(Nodo); boolean esistearco(Nodo,Nodo); tipoelem legginodo(Nodo); void scrivinodo(tipoelem ,Nodo); private: Cella_g * nodi[max];// ecco il vettore dei nodi /*il grafo è un vettore di puntatori a celle contenenti label*/ Lista nodi_adiacenti[max];//ecco vetttore di liste di adiacenza /* inoltre mi mantengo un vettore corrispondente di liste di ndoi adiacenti per ogni nodo nel vettore nodi*/ int dim; /*conta i nodi esitenti nel grafo=> dim=0 se grafo vuoto*/ };