<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:10pt;font-family:Monospace">
<p></p>
<p></p>
<p></p>
<p><span style="color:#000000">SOBRE ESTRUCTURAS DINÁMICAS DE DATOS "EDD"</span></p>
<p></p>
<p><span style="color:#000000">Parte del siguiente codigo lo extraje del material EDD</span></p>
<p><span style="color:#000000">de www.conclase.net</span></p>
<p></p>
<p><span style="color:#000000">----------------------------------------------------------</span></p>
<p><span style="color:#000000">typedef struct _nodo {</span></p>
<p><span style="color:#000000">   int valor;</span></p>
<p><span style="color:#000000">   struct _nodo *siguiente;</span></p>
<p><span style="color:#000000">} tipoNodo;</span></p>
<p><span style="color:#000000">typedef tipoNodo *pNodo;</span></p>
<p><span style="color:#000000">typedef tipoNodo *Lista;</span></p>
<p></p>
<p></p>
<p><span style="color:#000000">/* Funciones con listas: */</span></p>
<p><span style="color:#000000">void Insertar(Lista *l, int v);</span></p>
<p><span style="color:#f46037">/* ¿aquí "Lista *l" es lo mismo que "tipoNodo **l" ? */</span></p>
<p></p>
<p></p>
<p><span style="color:#000000">void Insertar(Lista *lista, int v)</span></p>
<p><span style="color:#000000">{</span></p>
<p><span style="color:#000000">   pNodo nuevo, anterior;</span></p>
<p><span style="color:#000000">   /* Crear un nodo nuevo */</span></p>
<p><span style="color:#000000">   nuevo = (pNodo)malloc(sizeof(tipoNodo));</span></p>
<p><span style="color:#000000">   nuevo->valor = v;</span></p>
<p><span style="color:#000000">   /* Si la lista está vacía */</span></p>
<p><span style="color:#000000">   if(ListaVacia(*lista) || (*lista)->valor > v) {</span></p>
<p><span style="color:#000000">      /* Añadimos la lista a continuación del nuevo nodo */</span></p>
<p><span style="color:#000000">      nuevo->siguiente = *lista;</span></p>
<p><span style="color:#000000">      /* Ahora, el comienzo de nuestra lista es en nuevo nodo */</span></p>
<p><span style="color:#000000">      *lista = nuevo;</span></p>
<p><span style="color:#000000">   }</span></p>
<p><span style="color:#000000">   else {</span></p>
<p><span style="color:#000000">      /* Buscar el nodo de valor menor a v */</span></p>
<p><span style="color:#000000">      anterior = *lista;</span></p>
<p></p>
<p><span style="color:#e75b35">   /* la pregunta es porque entonces aquí la asignación  "anterior =*lista"</span></p>
<p><span style="color:#e75b35">   no sería posible ya que una es "tipoNodo *anterior" y la otra es</span></p>
<p><span style="color:#e75b35">   "tipoNodo **lista"</span></p>
<p><span style="color:#e75b35">   */</span></p>
<p></p>
<p><span style="color:#000000">      /* Avanzamos hasta el último elemento o hasta que el</span></p>
<p><span style="color:#000000">         siguiente tenga un valor mayor que v */</span></p>
<p><span style="color:#000000">      while(anterior->siguiente && anterior->siguiente->valor <=</span></p>
<p><span style="color:#000000">v)</span></p>
<p><span style="color:#000000">         anterior = anterior->siguiente;</span></p>
<p><span style="color:#000000">      /* Insertamos el nuevo nodo después del nodo anterior */</span></p>
<p><span style="color:#000000">      nuevo->siguiente = anterior->siguiente;</span></p>
<p><span style="color:#000000">      anterior->siguiente = nuevo;</span></p>
<p><span style="color:#000000">   }</span></p>
<p><span style="color:#000000">}</span></p>
<ul type="disc"><li>--------------------------------------------------------------------</li>
<li>Estoy tratando de hacer algo parecido y no encuentro el error.</li>
<li>Este es mi codigo</li>
<li></li>
<li>--------------------------------------------------------------------</li>
<li>/* ************************** palabra.c ******************************* */</li>
<li></li>
<li>/*    La idea es que cada letra sea un nodo y se pueda escribir cadenas (palabras) de forma dinámica, sin saber la longitud de la misma. */</li>
<li></li>
<li>#include <stdio.h></li>
<li>#include <stdlib.h></li>
<li></li>
<li></li>
<li>typedef struct letra{</li>
<li>      char letra;</li>
<li>      struct letra *sigLetra;</li>
<li>} tipoLetra;</li>
<li></li>
<li></li>
<li>typedef tipoLetra *pLetra; </li>
<li>typedef tipoLetra *palabra; </li>
<li></li>
<li></li>
<li>void insertarLetra(palabra *p, char l);</li>
<li></li>
<li>int main() {</li>
<li>      char c;</li>
<li>      palabra pal=NULL;</li>
<li></li>
<li>      while((c=getchar())!='\n' || c!='\0')  {</li>
<li>              insertarLetra(&pal,c);</li>
<li>      }</li>
<li></li>
<li>      while(pal) {</li>
<li>              printf("%d",pal->letra);</li>
<li>              pal=pal->sigLetra;</li>
<li>      }</li>
<li></li>
<li>}</li>
<li></li>
<li>void insertarLetra(palabra *pal, char l){</li>
<li>      pLetra nueva; </li>
<li>      pLetra anterior;</li>
<li></li>
<li>      anterior=*pal; //aquí es la duda</li>
<li></li>
<li>      nueva=(pLetra)malloc(sizeof(tipoLetra));</li>
<li>      nueva->letra=l;</li>
<li></li>
<li>      while(anterior->sigLetra!=NULL) {</li>
<li>              anterior=anterior->sigLetra;</li>
<li>      }</li>
<li>      anterior->sigLetra=nueva;</li>
<li>}</li>
<li></li>
<li></li>
<li></li>
<li><span style="color:#000000">-- </span></li></ul>
<p><span style="color:#000000">Armando B. VERA</span></p>
<p><span style="color:#000000">abvera@arnet.com.ar</span></p>
</body></html>