<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.dsy.it/index.php?action=history&amp;feed=atom&amp;title=Algoritmi_e_strutture_dati%2FProgetti%2FRettangoli%2FStesura_I</id>
	<title>Algoritmi e strutture dati/Progetti/Rettangoli/Stesura I - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dsy.it/index.php?action=history&amp;feed=atom&amp;title=Algoritmi_e_strutture_dati%2FProgetti%2FRettangoli%2FStesura_I"/>
	<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;action=history"/>
	<updated>2026-05-24T19:24:02Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12494&amp;oldid=prev</id>
		<title>Yoruno: Riportata alla revisione precedente da Yoruno</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12494&amp;oldid=prev"/>
		<updated>2006-03-08T13:06:35Z</updated>

		<summary type="html">&lt;p&gt;Riportata alla revisione precedente da Yoruno&lt;/p&gt;
&lt;a href=&quot;https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;amp;diff=12494&amp;amp;oldid=12481&quot;&gt;Mostra modifiche&lt;/a&gt;</summary>
		<author><name>Yoruno</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12481&amp;oldid=prev</id>
		<title>218.131.196.147: test</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12481&amp;oldid=prev"/>
		<updated>2006-03-08T12:49:41Z</updated>

		<summary type="html">&lt;p&gt;test&lt;/p&gt;
&lt;a href=&quot;https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;amp;diff=12481&amp;amp;oldid=12433&quot;&gt;Mostra modifiche&lt;/a&gt;</summary>
		<author><name>218.131.196.147</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12433&amp;oldid=prev</id>
		<title>Yoruno: Riportata alla revisione precedente da Yoruno</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12433&amp;oldid=prev"/>
		<updated>2006-03-07T18:31:50Z</updated>

		<summary type="html">&lt;p&gt;Riportata alla revisione precedente da Yoruno&lt;/p&gt;
&lt;a href=&quot;https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;amp;diff=12433&amp;amp;oldid=12411&quot;&gt;Mostra modifiche&lt;/a&gt;</summary>
		<author><name>Yoruno</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12411&amp;oldid=prev</id>
		<title>200.14.236.76: test</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=12411&amp;oldid=prev"/>
		<updated>2006-03-07T16:49:58Z</updated>

		<summary type="html">&lt;p&gt;test&lt;/p&gt;
&lt;a href=&quot;https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;amp;diff=12411&amp;amp;oldid=11704&quot;&gt;Mostra modifiche&lt;/a&gt;</summary>
		<author><name>200.14.236.76</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=11704&amp;oldid=prev</id>
		<title>Yoruno il 08:59, 3 feb 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati/Progetti/Rettangoli/Stesura_I&amp;diff=11704&amp;oldid=prev"/>
		<updated>2006-02-03T08:59:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;   #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
   #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
         /* definizione dei tipi */&lt;br /&gt;
   &lt;br /&gt;
   typedef enum{red, black} color;&lt;br /&gt;
   &lt;br /&gt;
   struct rbapple {&lt;br /&gt;
   int xx;&lt;br /&gt;
   int yy;&lt;br /&gt;
   color co;&lt;br /&gt;
   char touch;&lt;br /&gt;
   struct rbapple *left;&lt;br /&gt;
   struct rbapple *right;&lt;br /&gt;
   struct rbapple *parent;&lt;br /&gt;
   };			/* struttura di	ogni nodo dell'albero dei punti*/&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   typedef struct rbapple rbapple;&lt;br /&gt;
   &lt;br /&gt;
   struct rbalbero {&lt;br /&gt;
   rbapple *root;&lt;br /&gt;
   rbapple *nul;&lt;br /&gt;
   };	      /*struttura contenente i puntatori alla radice e alla sentinella&amp;quot;&lt;br /&gt;
   	       dell'albero dei punti*/&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   struct rbnode {&lt;br /&gt;
   color co ;&lt;br /&gt;
   int a;&lt;br /&gt;
   int b;&lt;br /&gt;
   int c;&lt;br /&gt;
   int d;&lt;br /&gt;
   char campo;&lt;br /&gt;
   struct rbnode *sinistra;&lt;br /&gt;
   struct rbnode *destra;&lt;br /&gt;
   struct rbnode *genitore;&lt;br /&gt;
   };			  /*struttura di ogni nodo dell'albero dei rettangoli*/&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   typedef struct rbnode rbnode;&lt;br /&gt;
   &lt;br /&gt;
   struct rbtree {&lt;br /&gt;
     rbnode *root;&lt;br /&gt;
     rbnode *nil;&lt;br /&gt;
   };		 /*struttura contenente	i puntatori alla radice e alla sentinella&amp;quot;&lt;br /&gt;
   	       dell'albero dei rettangoli*/&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   typedef struct rbalbero rbalbero;&lt;br /&gt;
   typedef struct rbtree rbtree;&lt;br /&gt;
   &lt;br /&gt;
   /*    variabili globali	   */&amp;quot;&lt;br /&gt;
     rbtree *spazio=NULL; /*puntatore all'albero dei rettangoli*/&lt;br /&gt;
     rbtree *blocco=NULL;/*puntatore all'albero contennte i rettangoli facenti&lt;br /&gt;
   			parte di un blocco*/&amp;quot;&lt;br /&gt;
     rbalbero *foglio=NULL;/*puntatore all'albero dei punti*/&lt;br /&gt;
     rbalbero *niubbio=NULL;/*puntatore all'albero contenente i punti che vanno&lt;br /&gt;
   			   rimossi*/&amp;quot;&lt;br /&gt;
     int   par1=0,&lt;br /&gt;
     par2=0,&lt;br /&gt;
     par3=0,&lt;br /&gt;
     par4=0,			  /* variabili di input*/&amp;quot;&lt;br /&gt;
     perimetro= 0,&lt;br /&gt;
     max_x=0,  /*dimensione massima dell'ascissa del piano*/&lt;br /&gt;
     max_y=0;  /*dimensione massima dell'ordinata del piano*/&lt;br /&gt;
   char com; /*parametro di scelta*/&lt;br /&gt;
   &lt;br /&gt;
   /*&lt;br /&gt;
   	       prototipi di FUNZIONI E PROCEDURE&amp;quot;&lt;br /&gt;
   */&lt;br /&gt;
   &lt;br /&gt;
   /*&lt;br /&gt;
   procedure principali&lt;br /&gt;
   */&lt;br /&gt;
   void procedura_perimetro(void);&lt;br /&gt;
   void procedura_blocco(void);&lt;br /&gt;
   &lt;br /&gt;
   void rbdelete(rbalbero *tree, rbapple *q);&lt;br /&gt;
   void scorri_albero_rettangoli (rbtree *perno, rbnode *buster, rbalbero *joshua , rbapple *corda,int x, int y,rbalbero *elimina);&lt;br /&gt;
   void elimina_interni_foglio(rbalbero *tree, rbapple *q,rbnode *helper, int x, int y ,rbalbero *elimina);&lt;br /&gt;
   void scorri_albero_punti(rbalbero *sanato, rbapple *helper, rbtree *f, rbnode *element, rbalbero *elimina);&lt;br /&gt;
   void ruotaadestra(rbalbero *andtrea , rbapple *giovanni);&lt;br /&gt;
   void inizializzacampo(rbnode *pino, rbnode *peppe);&lt;br /&gt;
   void fixup(rbalbero *tree, rbapple *x);&lt;br /&gt;
   void elimina_albero_supporto(rbalbero *sanato, rbapple *helper);&lt;br /&gt;
   void elimina_puntini(rbalbero *sanato, rbapple *helper, rbalbero *albero_punti);&lt;br /&gt;
   void inserisci_foglio(rbalbero *carmencita, int yukapan, int turu);&lt;br /&gt;
   void canc_albero(rbapple *plastica, rbapple *impertinente);&lt;br /&gt;
   void costruisci_foglio(rbnode *attacca, rbnode *lattina, rbalbero *the);&lt;br /&gt;
   void inserisci_blocco(rbtree *dd, int c, int z, int vv, int sc);&lt;br /&gt;
   void creablocco(rbnode *at, rbnode *ds, rbtree *pc, rbtree *os, int bin, int ffe, int cut, int fre);&lt;br /&gt;
   void ruotaasinistra(rbalbero *pat, rbapple *emilia);&lt;br /&gt;
   void inserisci_punto (rbalbero *carmen, int lardo, int palino);&lt;br /&gt;
   void elimina_tutto_l_albero(rbnode *uno, rbnode *due);&lt;br /&gt;
   void rightrotate(rbtree *ssa ,  rbnode *eew);&lt;br /&gt;
   void leftrotate(rbtree *gix, rbnode *giz);&lt;br /&gt;
   void inserisci_in_albero(rbtree *csi, int x , int y, int z, int u);&lt;br /&gt;
   void installarettangolo1(rbtree *doo, int you, int foo, int sedd, int degr);&lt;br /&gt;
   void search_block(rbnode *fab, rbnode *anna, rbtree *lobot, char drea,  int cse, int cpi);&lt;br /&gt;
   /*&lt;br /&gt;
   funzioni&lt;br /&gt;
   */&lt;br /&gt;
   int perimetroeblocco(rbalbero *foglio, int peri, char p_o_b);&lt;br /&gt;
   int ilpuntoeinterno(rbnode *p,int x, int y);&lt;br /&gt;
   rbapple *treesucc(rbalbero *tree, rbapple *q);&lt;br /&gt;
   rbapple *treemin(rbapple *p, rbalbero *tree);&lt;br /&gt;
   rbapple *minimo_foglio(rbapple *paolo, rbapple *piero);&lt;br /&gt;
   rbapple *trova_nodofoglio(rbalbero *eustachio, int adalberto , int paola);&lt;br /&gt;
   rbapple *crea_apple(rbalbero *lindo, int cccp, int ostro);&lt;br /&gt;
   rbapple *inserisci_apple(rbalbero *orin, int elio, int samaga);&lt;br /&gt;
   rbalbero *costruisci_blocco(rbtree *star, rbtree *stor,	 rbalbero *bull, int e, int f,char g);&amp;quot;&lt;br /&gt;
   rbalbero *crea_rbalbero(int gino);&lt;br /&gt;
   rbtree *crea_rbtree(void);&lt;br /&gt;
   rbtree *crea_spazio(rbtree *der, int ddr, int fviva);&lt;br /&gt;
   rbnode *cercanodino(rbtree *nonnot, int defr, int wwe, int t342, int dds);&lt;br /&gt;
   rbnode *assegna_rbnode(rbtree *eew, int, int, int, int);&lt;br /&gt;
   rbnode *metti_un_elemento(rbtree *lls, int d, int f, int r, int t);&lt;br /&gt;
   &lt;br /&gt;
   /*&lt;br /&gt;
   	 implementazione delle FUNZIONI	e PROCEDURE&amp;quot;&lt;br /&gt;
   */&lt;br /&gt;
   &lt;br /&gt;
   rbtree *crea_spazio(rbtree *spazio, int x, int y)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura controlla che non sia già presente uno spazio e ne crea uno di&lt;br /&gt;
   dimensioni x y; nel caso in cui ci sia già uno spazio, lo cancella e, solo dopo&lt;br /&gt;
   crea quello richiesto.&lt;br /&gt;
   Nel primo caso il tempo è O(1), nel secondo dipende dalla funzione che elimina l'&lt;br /&gt;
   albero precedente.&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
     max_x=x;&lt;br /&gt;
     max_y=y;&lt;br /&gt;
     if(!spazio)&lt;br /&gt;
     {&lt;br /&gt;
      if (!(spazio = crea_rbtree()))&lt;br /&gt;
         exit(-2);&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       elimina_tutto_l_albero(spazio-&amp;gt;root, spazio-&amp;gt;nil);&lt;br /&gt;
       free(spazio);&lt;br /&gt;
      if (!(spazio = crea_rbtree()))&lt;br /&gt;
         exit(-2);&lt;br /&gt;
     }&lt;br /&gt;
     return spazio;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void procedura_blocco(void)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura racchiude tutte le operazioni da compiere per calcolare e&lt;br /&gt;
   stampare a video la descrizione del contorno del blocco&lt;br /&gt;
   */&lt;br /&gt;
    {&lt;br /&gt;
    if(foglio != NULL)&lt;br /&gt;
   	       {&amp;quot;&lt;br /&gt;
   		  canc_albero(foglio-&amp;gt;root, foglio-&amp;gt;nul);&amp;quot;&lt;br /&gt;
   		  free(foglio);&amp;quot;&lt;br /&gt;
   		  foglio = NULL;&amp;quot;&lt;br /&gt;
   	       }&amp;quot;&lt;br /&gt;
   	       if(!(par1 &amp;gt;= 0 &amp;amp;&amp;amp; par2 &amp;gt;= 0 &amp;amp;&amp;amp; par1 &amp;lt;=max_x &amp;amp;&amp;amp; par2&amp;lt;=max_y))&amp;quot;&lt;br /&gt;
   		    {&amp;quot;&lt;br /&gt;
   		    printf(&amp;quot;&amp;quot;b -1&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		    }&amp;quot;&lt;br /&gt;
   	       else&amp;quot;&lt;br /&gt;
   		   {&amp;quot;&lt;br /&gt;
   		   foglio = costruisci_blocco(spazio, blocco, foglio, par1, par2,'b');&amp;quot;&lt;br /&gt;
   		   if(foglio !=	NULL)&amp;quot;&lt;br /&gt;
   			     {&amp;quot;&lt;br /&gt;
   			     if	(!(niubbio=crea_rbalbero(1)))&amp;quot;&lt;br /&gt;
   				exit(-2);&amp;quot;&lt;br /&gt;
   			     scorri_albero_punti(foglio, foglio-&amp;gt;root, spazio, spazio-&amp;gt;root, niubbio);&amp;quot;&lt;br /&gt;
   			     elimina_puntini(niubbio, niubbio-&amp;gt;root,foglio);&amp;quot;&lt;br /&gt;
   			     elimina_albero_supporto(niubbio, niubbio-&amp;gt;root);&amp;quot;&lt;br /&gt;
   			     free(niubbio-&amp;gt;nul);&amp;quot;&lt;br /&gt;
   			     free(niubbio);&amp;quot;&lt;br /&gt;
   			     perimetro = perimetroeblocco(foglio, perimetro, 'b');&amp;quot;&lt;br /&gt;
   			     }&amp;quot;&lt;br /&gt;
   		   }&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   void elimina_tutto_l_albero(rbnode *ghigo, rbnode *nil)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura elimina tutto l'albero passatole in input.&lt;br /&gt;
   tempo @(n), essendo n i nodi dell'albero da cancellare.&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
   	    if (ghigo-&amp;gt;destra!=nil)&amp;quot;&lt;br /&gt;
   	       elimina_tutto_l_albero(ghigo-&amp;gt;destra,nil);&amp;quot;&lt;br /&gt;
   	    if (ghigo-&amp;gt;sinistra!=nil)&amp;quot;&lt;br /&gt;
   	       elimina_tutto_l_albero(ghigo-&amp;gt;sinistra, nil);&amp;quot;&lt;br /&gt;
   	    ghigo-&amp;gt;genitore = nil;&amp;quot;&lt;br /&gt;
   	    free (ghigo);&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   rbtree *crea_rbtree(void)&lt;br /&gt;
   /*&lt;br /&gt;
   questa funzione crea e inizializza la radice e la sentinella di un albero e ne&lt;br /&gt;
   restituisce il puntatore.&lt;br /&gt;
   tempo @(1)&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
           rbtree *tree = malloc(sizeof(rbtree));&lt;br /&gt;
           if(!tree)&lt;br /&gt;
   	    return NULL;&amp;quot;&lt;br /&gt;
           if(!(tree-&amp;gt;root = malloc(sizeof(rbnode))))&lt;br /&gt;
   	    return NULL;&amp;quot;&lt;br /&gt;
           tree-&amp;gt;nil = tree-&amp;gt;root;&lt;br /&gt;
           tree-&amp;gt;nil-&amp;gt;sinistra = tree-&amp;gt;nil-&amp;gt;destra = tree-&amp;gt;nil-&amp;gt;genitore = tree-&amp;gt;nil;&lt;br /&gt;
           tree-&amp;gt;nil-&amp;gt;co = black;&lt;br /&gt;
           return tree;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void elimina_puntini(rbalbero *sanato, rbapple *helper, rbalbero *albero_punti)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura elimina i punti interni del blocco, che abbiamo precedentemente&lt;br /&gt;
   inserito in un albero.&lt;br /&gt;
   tempo O(n), essendo n i nodi da cancellare. (va anlizzata a parte la procedura&lt;br /&gt;
   che effettivamente elimina i nodi)&lt;br /&gt;
   */&lt;br /&gt;
   	 {&amp;quot;&lt;br /&gt;
           rbapple *kiss;&lt;br /&gt;
           if (helper-&amp;gt;left!=sanato-&amp;gt;nul)&lt;br /&gt;
   	    elimina_puntini(sanato, helper-&amp;gt;left, albero_punti);&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   		kiss = trova_nodofoglio(albero_punti, helper-&amp;gt;xx, helper-&amp;gt;yy);&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   		if (kiss)&amp;quot;&lt;br /&gt;
   			rbdelete(albero_punti, kiss);&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
           if (helper-&amp;gt;right!=sanato-&amp;gt;nul)&lt;br /&gt;
   	   elimina_puntini(sanato,	helper-&amp;gt;right,albero_punti);&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void elimina_albero_supporto(rbalbero *sanato, rbapple *helper)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura distrugge completamente un albero di tipo rbalbero.&lt;br /&gt;
   tempo @(n), essendo n i nodi dell'albero.&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
           rbapple *kiss;&lt;br /&gt;
           if (helper-&amp;gt;left!=sanato-&amp;gt;nul)&lt;br /&gt;
   	    elimina_albero_supporto(sanato, helper-&amp;gt;left);&amp;quot;&lt;br /&gt;
           if (helper-&amp;gt;right!=sanato-&amp;gt;nul)&lt;br /&gt;
   	   elimina_albero_supporto(sanato,	helper-&amp;gt;right);&amp;quot;&lt;br /&gt;
   		free(helper);&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void installarettangolo1(rbtree *spazio, int a, int b, int c, int d)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura inserisce un rettangolo nell'albero in input.&lt;br /&gt;
   tempo O(log n) dovuto alla ricerca nell'albero e all'insrimento&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
     rbnode *maya =NULL;&lt;br /&gt;
     if((a &amp;lt; c)&amp;amp;&amp;amp;(a &amp;gt;=0)&amp;amp;&amp;amp;(b &amp;lt; d)&amp;amp;&amp;amp;(b &amp;gt;= 0)&amp;amp;&amp;amp;(c &amp;lt;= max_x)&amp;amp;&amp;amp;(d &amp;lt;=max_y)&amp;amp;&amp;amp;(c &amp;gt;=0)&amp;amp;&amp;amp;(d&amp;gt;=0))&lt;br /&gt;
     {&lt;br /&gt;
       maya = cercanodino(spazio, a, b, c, d);&lt;br /&gt;
       if(maya == NULL)&lt;br /&gt;
       {&lt;br /&gt;
         inserisci_in_albero(spazio, a, b, c, d);&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   void inserisci_in_albero(rbtree* spazio, int a, int b, int c, int d)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura inserisce un nodo in un'albero rb e ne ripristina le proprietà.&lt;br /&gt;
   tempo @(log n) dovuto alla ricerca dello spazio nell'albero&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
     rbnode *fatur	 = metti_un_elemento(spazio, a, b, c, d);&amp;quot;&lt;br /&gt;
     rbnode *iron = NULL;&lt;br /&gt;
     if (fatur != NULL){&lt;br /&gt;
     while(fatur != spazio-&amp;gt;root &amp;amp;&amp;amp; fatur-&amp;gt;genitore-&amp;gt;c == red)&lt;br /&gt;
     {&lt;br /&gt;
       if(fatur-&amp;gt;genitore == fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;sinistra)&lt;br /&gt;
       {&lt;br /&gt;
         iron = fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;destra;&lt;br /&gt;
         if(iron-&amp;gt;co == red)&lt;br /&gt;
         {&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;co = black;&lt;br /&gt;
           iron-&amp;gt;co = black;&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;co = red;&lt;br /&gt;
           fatur= fatur-&amp;gt;genitore-&amp;gt;genitore;&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
           if(fatur == fatur-&amp;gt;genitore-&amp;gt;destra)&lt;br /&gt;
           {&lt;br /&gt;
   	  fatur	= fatur-&amp;gt;genitore;&amp;quot;&lt;br /&gt;
   	  leftrotate(spazio, fatur);&amp;quot;&lt;br /&gt;
           }&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;co = black;&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;co = red;&lt;br /&gt;
           rightrotate(spazio, fatur-&amp;gt;genitore-&amp;gt;genitore);&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
   &lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         iron = fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;sinistra;&lt;br /&gt;
         if(iron-&amp;gt;co == red)&lt;br /&gt;
         {&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;co = black;&lt;br /&gt;
           iron-&amp;gt;co = black;&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;co = red;&lt;br /&gt;
           fatur = fatur-&amp;gt;genitore-&amp;gt;genitore;&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
           if(fatur == fatur-&amp;gt;genitore-&amp;gt;sinistra)&lt;br /&gt;
           {&lt;br /&gt;
   	  fatur	= fatur-&amp;gt;genitore;&amp;quot;&lt;br /&gt;
   	  rightrotate(spazio, fatur);&amp;quot;&lt;br /&gt;
           }&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;co = black;&lt;br /&gt;
           fatur-&amp;gt;genitore-&amp;gt;genitore-&amp;gt;co = red;&lt;br /&gt;
           leftrotate(spazio, fatur-&amp;gt;genitore-&amp;gt;genitore);&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     spazio-&amp;gt;root-&amp;gt;co = black;}&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   rbnode *metti_un_elemento(rbtree *spazio, int a, int b, int c, int d)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura inserisce un elemento in un albero rb, come se si trattasse di&lt;br /&gt;
   un albero binario di ricerca.&lt;br /&gt;
   tempo @(log n) limitato superiormente dal fatto che l'albero è bilanciato, in&lt;br /&gt;
   quanto rb.&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
     char pink;&lt;br /&gt;
     rbnode *bruce = spazio-&amp;gt;root;&lt;br /&gt;
     rbnode *purple = spazio-&amp;gt;nil;&lt;br /&gt;
     while(bruce != spazio-&amp;gt;nil)&lt;br /&gt;
     {&lt;br /&gt;
       purple = bruce;&lt;br /&gt;
       if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c == purple-&amp;gt;c &amp;amp;&amp;amp; d == purple-&amp;gt;d)&lt;br /&gt;
       return NULL;&lt;br /&gt;
       else&lt;br /&gt;
       if(a &amp;gt;= purple-&amp;gt;a &amp;amp;&amp;amp; b &amp;gt;= purple-&amp;gt;b &amp;amp;&amp;amp; c &amp;lt;= purple-&amp;gt;c &amp;amp;&amp;amp; d &amp;lt;= purple-&amp;gt;d)&lt;br /&gt;
       return NULL;&lt;br /&gt;
       else&lt;br /&gt;
       if (a &amp;lt; purple-&amp;gt;a)&lt;br /&gt;
       pink = 'n';&lt;br /&gt;
       else&lt;br /&gt;
       if(a &amp;gt; purple-&amp;gt;a)&lt;br /&gt;
       pink = 'y';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b &amp;lt; purple-&amp;gt;b)&lt;br /&gt;
       pink = 'n';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b &amp;gt; purple-&amp;gt;b)&lt;br /&gt;
       pink = 'y';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c &amp;lt; purple-&amp;gt;c)&lt;br /&gt;
       pink = 'n';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c &amp;gt; purple-&amp;gt;c)&lt;br /&gt;
       pink = 'y';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c == purple-&amp;gt;c &amp;amp;&amp;amp; d &amp;lt;= purple-&amp;gt;d)&lt;br /&gt;
       pink= 'n';&lt;br /&gt;
       else&lt;br /&gt;
       pink = 'y';&lt;br /&gt;
       if (pink == 'n')&lt;br /&gt;
       bruce =purple-&amp;gt;sinistra;&lt;br /&gt;
       else&lt;br /&gt;
       bruce=purple-&amp;gt;destra;&lt;br /&gt;
     }&lt;br /&gt;
     bruce = assegna_rbnode(spazio, a, b, c, d);&lt;br /&gt;
     bruce-&amp;gt;genitore = purple;&lt;br /&gt;
     if(purple == spazio-&amp;gt;nil)&lt;br /&gt;
     spazio-&amp;gt;root = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a &amp;lt; purple-&amp;gt;a)&lt;br /&gt;
     purple-&amp;gt;sinistra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a &amp;gt; purple-&amp;gt;a)&lt;br /&gt;
     purple-&amp;gt;destra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b &amp;lt; purple-&amp;gt;b)&lt;br /&gt;
     purple-&amp;gt;sinistra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b &amp;gt; purple-&amp;gt;b)&lt;br /&gt;
     purple-&amp;gt;destra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c &amp;lt; purple-&amp;gt;c)&lt;br /&gt;
     purple-&amp;gt;sinistra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c &amp;gt; purple-&amp;gt;c)&lt;br /&gt;
     purple-&amp;gt;destra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     if(a == purple-&amp;gt;a &amp;amp;&amp;amp; b == purple-&amp;gt;b &amp;amp;&amp;amp; c == purple-&amp;gt;c &amp;amp;&amp;amp; d &amp;lt;= purple-&amp;gt;d)&lt;br /&gt;
     purple-&amp;gt;sinistra = bruce;&lt;br /&gt;
     else&lt;br /&gt;
     purple-&amp;gt;destra = bruce;&lt;br /&gt;
     return bruce;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   rbnode *assegna_rbnode(rbtree *spazio, int a, int b, int c, int d)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura alloca spazio per un nodo di tipo rbtree. In caso no riuscisse&lt;br /&gt;
   ad allocare spazio in memoria esce dal programma e restituisce un codice di&lt;br /&gt;
   errore.&lt;br /&gt;
   tempo @(1)&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
     rbnode *figaro = NULL;&lt;br /&gt;
     if (!(figaro = malloc(sizeof(rbnode))))&lt;br /&gt;
        exit(-2);&lt;br /&gt;
     figaro-&amp;gt;campo='n';&lt;br /&gt;
     figaro-&amp;gt;co=red;&lt;br /&gt;
     figaro-&amp;gt;a=a;&lt;br /&gt;
     figaro-&amp;gt;b=b;&lt;br /&gt;
     figaro-&amp;gt;c=c;&lt;br /&gt;
     figaro-&amp;gt;d=d;&lt;br /&gt;
     figaro-&amp;gt;destra = spazio-&amp;gt;nil;&lt;br /&gt;
     figaro-&amp;gt;sinistra = spazio-&amp;gt;nil;&lt;br /&gt;
     figaro-&amp;gt;genitore=spazio-&amp;gt;nil;&lt;br /&gt;
     return figaro;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void leftrotate(rbtree* spazio, rbnode* indotto)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura produce una rotazione necessaria al ripristino delle proprietà&lt;br /&gt;
   dell'alberorb.&lt;br /&gt;
   tempo @(1)&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
           rbnode *y = indotto-&amp;gt;destra;&lt;br /&gt;
           indotto-&amp;gt;destra = y-&amp;gt;sinistra;&lt;br /&gt;
           if (y-&amp;gt;sinistra != spazio-&amp;gt;nil)&lt;br /&gt;
   	   y-&amp;gt;sinistra-&amp;gt;genitore = indotto;&amp;quot;&lt;br /&gt;
   	   y-&amp;gt;genitore = indotto-&amp;gt;genitore;&amp;quot;&lt;br /&gt;
           if (indotto-&amp;gt;genitore==spazio-&amp;gt;nil)&lt;br /&gt;
   	   spazio-&amp;gt;root	= y;&amp;quot;&lt;br /&gt;
           else&lt;br /&gt;
   	    if (indotto==indotto-&amp;gt;genitore-&amp;gt;sinistra)&amp;quot;&lt;br /&gt;
   	    y-&amp;gt;genitore-&amp;gt;sinistra = y;&amp;quot;&lt;br /&gt;
   	    else&amp;quot;&lt;br /&gt;
   	    y-&amp;gt;genitore-&amp;gt;destra	= y;&amp;quot;&lt;br /&gt;
           y-&amp;gt;sinistra = indotto;&lt;br /&gt;
           indotto-&amp;gt;genitore = y;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void rightrotate(rbtree* perno, rbnode* ghigo)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura produce una rotazione necessaria al ripristino delle proprietà&lt;br /&gt;
   dell'alberorb.&lt;br /&gt;
   tempo @(1)&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
           rbnode *mm = ghigo-&amp;gt;sinistra;&lt;br /&gt;
           ghigo-&amp;gt;sinistra = mm-&amp;gt;destra;&lt;br /&gt;
           if (mm-&amp;gt;destra!=perno-&amp;gt;nil)&lt;br /&gt;
   		mm-&amp;gt;destra-&amp;gt;genitore = ghigo;&amp;quot;&lt;br /&gt;
           mm-&amp;gt;genitore = ghigo-&amp;gt;genitore;&lt;br /&gt;
           if (ghigo-&amp;gt;genitore==perno-&amp;gt;nil)&lt;br /&gt;
   		perno-&amp;gt;root = mm;&amp;quot;&lt;br /&gt;
           else&lt;br /&gt;
   	    if (ghigo==ghigo-&amp;gt;genitore-&amp;gt;destra)&amp;quot;&lt;br /&gt;
   	    mm-&amp;gt;genitore-&amp;gt;destra = mm;&amp;quot;&lt;br /&gt;
   	    else&amp;quot;&lt;br /&gt;
   	    mm-&amp;gt;genitore-&amp;gt;sinistra = mm;&amp;quot;&lt;br /&gt;
           mm-&amp;gt;destra = ghigo;&lt;br /&gt;
           ghigo-&amp;gt;genitore = mm;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   rbnode *cercanodino(rbtree *spazio, int a, int b, int c, int d)&lt;br /&gt;
   /*&lt;br /&gt;
   questa funzione cerca un nodo nell'albero e, in caso lo trovi, ne restituisce il&lt;br /&gt;
   puntatore; in caso contrario restituisce NULL.&lt;br /&gt;
   tempo @(log n)&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
     rbnode *buffer = NULL;&lt;br /&gt;
     char macaja;&lt;br /&gt;
     buffer = spazio-&amp;gt;root;&lt;br /&gt;
     while(buffer != spazio-&amp;gt;nil &amp;amp;&amp;amp; (buffer-&amp;gt;a != a || buffer-&amp;gt;b != b || buffer-&amp;gt;c != c || buffer-&amp;gt;d != d))&lt;br /&gt;
     {&lt;br /&gt;
       if(a &amp;lt; buffer-&amp;gt;a)&lt;br /&gt;
       macaja = 'y';&lt;br /&gt;
       else&lt;br /&gt;
       if(a &amp;gt; buffer-&amp;gt;a)&lt;br /&gt;
       macaja = 'n';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == buffer-&amp;gt;a &amp;amp;&amp;amp; b &amp;lt; buffer-&amp;gt;b)&lt;br /&gt;
       macaja = 'y' ;&lt;br /&gt;
       else&lt;br /&gt;
       if(a == buffer-&amp;gt;a &amp;amp;&amp;amp; b &amp;gt; buffer-&amp;gt;b)&lt;br /&gt;
       macaja = 'n';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == buffer-&amp;gt;a &amp;amp;&amp;amp; b == buffer-&amp;gt;b &amp;amp;&amp;amp; c &amp;lt; buffer-&amp;gt;c)&lt;br /&gt;
       macaja = 'y';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == buffer-&amp;gt;a &amp;amp;&amp;amp; b == buffer-&amp;gt;b &amp;amp;&amp;amp; c &amp;gt; buffer-&amp;gt;c)&lt;br /&gt;
       macaja = 'n';&lt;br /&gt;
       else&lt;br /&gt;
       if(a == buffer-&amp;gt;a &amp;amp;&amp;amp; b == buffer-&amp;gt;b &amp;amp;&amp;amp; c == buffer-&amp;gt;c &amp;amp;&amp;amp; d &amp;lt;= buffer-&amp;gt;d)&lt;br /&gt;
       macaja = 'y';&lt;br /&gt;
       else&lt;br /&gt;
       macaja = 'n';&lt;br /&gt;
       if (macaja =='y')&lt;br /&gt;
          buffer = buffer-&amp;gt;sinistra  ;&lt;br /&gt;
       else&lt;br /&gt;
           buffer=buffer-&amp;gt;destra;&lt;br /&gt;
     }&lt;br /&gt;
     if(buffer == spazio-&amp;gt;nil)&lt;br /&gt;
     return NULL;&lt;br /&gt;
     else&lt;br /&gt;
     return buffer;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   rbalbero *crea_rbalbero(int a)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura alloca spazio e inizializza la radice e la sentnella di un&lt;br /&gt;
   albero di tipo rbalbero.&lt;br /&gt;
   tempo @(1)&lt;br /&gt;
   */&lt;br /&gt;
   {&lt;br /&gt;
           rbalbero *tree = malloc(sizeof(rbalbero));&lt;br /&gt;
           if(!tree)&lt;br /&gt;
   	    return NULL;&amp;quot;&lt;br /&gt;
           if(!(tree-&amp;gt;root = malloc(sizeof(rbapple))))&lt;br /&gt;
   	    return NULL;&amp;quot;&lt;br /&gt;
           tree-&amp;gt;nul = tree-&amp;gt;root;&lt;br /&gt;
           tree-&amp;gt;nul-&amp;gt;left = tree-&amp;gt;nul-&amp;gt;right = tree-&amp;gt;nul-&amp;gt;parent = tree-&amp;gt;nul;&lt;br /&gt;
           tree-&amp;gt;nul-&amp;gt;co = black;&lt;br /&gt;
   		if (a==1)&amp;quot;&lt;br /&gt;
   		   {&amp;quot;&lt;br /&gt;
   		     if	(!(tree-&amp;gt;nul=malloc(sizeof(rbapple))))&amp;quot;&lt;br /&gt;
   			exit(-2);&amp;quot;&lt;br /&gt;
   		     tree-&amp;gt;root-&amp;gt;left =	tree-&amp;gt;root-&amp;gt;right = tree-&amp;gt;root-&amp;gt;parent = tree-&amp;gt;nul;&amp;quot;&lt;br /&gt;
   		   }&amp;quot;&lt;br /&gt;
           return tree;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   rbapple *trova_nodofoglio(rbalbero *perno, int puntox, int puntoy)&lt;br /&gt;
   /*&lt;br /&gt;
   questa funzione si occupa di trovare un nodo, se esistente, e di restituirne il&lt;br /&gt;
   puntatore. Nel caso in cui il nodo non esista restituisce NULL.&lt;br /&gt;
   tempo @(log n)&lt;br /&gt;
   */&lt;br /&gt;
   &lt;br /&gt;
   {&lt;br /&gt;
      rbapple *giusto=perno-&amp;gt;root;&lt;br /&gt;
      while (giusto!=perno-&amp;gt;nul &amp;amp;&amp;amp; (giusto-&amp;gt;xx!=puntox || giusto-&amp;gt;yy!=puntoy))&lt;br /&gt;
      {&lt;br /&gt;
        if (puntox&amp;lt;giusto-&amp;gt;xx)&lt;br /&gt;
        giusto = giusto-&amp;gt;left;&lt;br /&gt;
        else&lt;br /&gt;
        if (puntox&amp;gt;giusto-&amp;gt;xx)&lt;br /&gt;
        giusto = giusto-&amp;gt;right;&lt;br /&gt;
        else&lt;br /&gt;
        if (puntox == giusto-&amp;gt;xx &amp;amp;&amp;amp; puntoy &amp;lt; giusto-&amp;gt;yy)&lt;br /&gt;
        giusto = giusto-&amp;gt;left;&lt;br /&gt;
        else&lt;br /&gt;
        giusto = giusto-&amp;gt;right;&lt;br /&gt;
       }&lt;br /&gt;
       if (giusto==perno-&amp;gt;nul)&lt;br /&gt;
   	   return NULL;&amp;quot;&lt;br /&gt;
       else&lt;br /&gt;
   	   return giusto;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   void inserisci_punto(rbalbero* perno, int puntox, int puntoy)&lt;br /&gt;
   /*&lt;br /&gt;
   questa procedura inserisce un nodo in un'albero rb e ne ripristina le proprietà.&lt;br /&gt;
   tempo @(log n) dovuto alla ricerca dello spazio nell'albero&lt;br /&gt;
   */&lt;br /&gt;
   &lt;br /&gt;
   {&lt;br /&gt;
     rbapple *birba = inserisci_apple(perno, puntox, puntoy);&lt;br /&gt;
     rbapple *cesco;&lt;br /&gt;
     if (birba!=NULL){&lt;br /&gt;
     while (birba!=perno-&amp;gt;root &amp;amp;&amp;amp; birba-&amp;gt;parent-&amp;gt;co==red)&lt;br /&gt;
     {&lt;br /&gt;
       if (birba-&amp;gt;parent==birba-&amp;gt;parent-&amp;gt;parent-&amp;gt;left)&lt;br /&gt;
       {&lt;br /&gt;
          cesco = birba-&amp;gt;parent-&amp;gt;parent-&amp;gt;right;&lt;br /&gt;
          if (cesco-&amp;gt;co==red)&lt;br /&gt;
          {&lt;br /&gt;
   	  birba-&amp;gt;parent-&amp;gt;co  = black;&amp;quot;&lt;br /&gt;
   	  cesco-&amp;gt;co = black;&amp;quot;&lt;br /&gt;
   	  birba-&amp;gt;parent-&amp;gt;parent-&amp;gt;co = red;&amp;quot;&lt;br /&gt;
   	  birba	= birba-&amp;gt;parent-&amp;gt;parent;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
         else&lt;br /&gt;
          {&lt;br /&gt;
           if (birba==birba-&amp;gt;parent-&amp;gt;right)&lt;br /&gt;
   	 {&amp;quot;&lt;br /&gt;
   	    birba = birba-&amp;gt;parent;&amp;quot;&lt;br /&gt;
   	    ruotaasinistra(perno, birba);&amp;quot;&lt;br /&gt;
   	 }&amp;quot;&lt;br /&gt;
           birba-&amp;gt;parent-&amp;gt;co       = black;&lt;br /&gt;
           birba-&amp;gt;parent-&amp;gt;parent-&amp;gt;co = red;&lt;br /&gt;
           ruotaadestra(perno, birba-&amp;gt;parent-&amp;gt;parent);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
       else&lt;br /&gt;
        {&lt;br /&gt;
        cesco = birba-&amp;gt;parent-&amp;gt;parent-&amp;gt;left;&lt;br /&gt;
        if (cesco-&amp;gt;co==red)&lt;br /&gt;
        {&lt;br /&gt;
   	  birba-&amp;gt;parent-&amp;gt;co	= black;&amp;quot;&lt;br /&gt;
   	  cesco-&amp;gt;co = black;&amp;quot;&lt;br /&gt;
   	  birba-&amp;gt;parent-&amp;gt;parent-&amp;gt;co = red;&amp;quot;&lt;br /&gt;
   	  birba	= birba-&amp;gt;parent-&amp;gt;parent;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
Per quanto riguarda la discussione del progetto fai riferimento a [http://www.dsy.it/forum/attachment.php?s=&amp;amp;postid=21256 questo file], che contiene anche il file C del progetto.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Progetti]]&lt;/div&gt;</summary>
		<author><name>Yoruno</name></author>
		
	</entry>
</feed>