SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: l2ebelde en Miércoles 28 de Marzo de 2007, 19:31

Título: Listas Enlazadas
Publicado por: l2ebelde en Miércoles 28 de Marzo de 2007, 19:31
Quisiera saber si alguien me puede ayudar a convertir este codigo de lista enlazada simple a circular...

aqui va el codigo:
Código: Text
  1. //Muestra del funcionamiento de las listas enlazadas
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <iostream.h>
  6.  
  7. void insertar(int n);
  8. int borrar(int p);
  9. void mostrar();
  10.  
  11. struct Tnodo
  12. {  int n;//Informaci¢n del nodo
  13.   Tnodo *sig;//Apunta al siguiente nodo
  14. } *ini, *fin; //Inicio y fin de la lista
  15.  
  16. int main()
  17. {  clrscr();
  18.   insertar(6);
  19.   insertar(3);
  20.   insertar(9);
  21.   borrar(3);
  22.   mostrar();
  23.  
  24.   return 0;
  25. }
  26.  
  27. void insertar(int n)
  28. {  Tnodo *aux=new Tnodo;
  29.   if(aux!=NULL)
  30.   {  //Guarda el valor en el nodo
  31.     aux->n=n;
  32.     //Si no hay elementos (Est  vac¡a)
  33.     if(ini==NULL)
  34.     {  //El inicio es el nuevo nodo
  35.       ini=aux;
  36.     }
  37.     else//Mete al final, el nuevo nodo
  38.       fin->sig=aux;
  39.     //Ahora el fin, es el que se acaba de insertar
  40.     fin=aux;
  41.     //Despues del fin, apunta a nulo
  42.     fin->sig=NULL;
  43.   }
  44. }
  45.  
  46. int borrar(int valor)
  47. {  Tnodo *actual;
  48.   //Lo busca en la primera posicion
  49.   if(ini->n == valor)
  50.   {  ini=ini->sig;//Inicio es otro
  51.     return valor;//Regresa el valor
  52.   }
  53.   //BUSCA EL VALOR PARA BORRARLO
  54.   actual=ini;
  55.   //Mientras el siguiente no sea el valor buscado
  56.   //  y no se haya llegado al fin de la lista
  57.   while(actual->sig->n!=valor && actual!=NULL)
  58.     actual=actual->sig;
  59.   //Si encontr¢ el valor buscado
  60.   if(actual!=NULL)
  61.   {  //Enlaza el actual con el siguiente del valor encontrado
  62.     actual->sig=actual->sig->sig;
  63.     return valor;
  64.   }
  65.   else//No lo encontr¢
  66.     return -1;
  67. }
  68.  
  69. void mostrar()
  70. {  Tnodo *actual = ini;
  71.   cout << "Los elementos ingresados son: " << endl;
  72.   while(actual!=NULL)
  73.   {  cout << actual->n <<" ";
  74.     actual=actual->sig;
  75.   }
  76. }
  77.  
Título: Re: Listas Enlazadas
Publicado por: JuanK en Miércoles 28 de Marzo de 2007, 20:06
creo que cualquiera acá lo puede hacer.

el punto es:

Por que no lo has podido hacer tu?
Título: Re: Listas Enlazadas
Publicado por: RoChIsA en Miércoles 28 de Marzo de 2007, 20:47
Por que soy principiante...
Título: Re: Listas Enlazadas
Publicado por: JuanK en Miércoles 28 de Marzo de 2007, 20:54
ok, tonces nua sugerencia para que la tengas en cuenta en adelante:

las dudas deben ser puntuales sino parecerá que quieres que otros hagan el trabajo por ti.

Que dudas acerca de la implementación tienes? sabes que es una lista circular y que es una lista enlazada?

Que errores tienes ?

Dudas puntuales, y así obtendrás mas y mejor ayuda.
Título: Re: Listas Enlazadas
Publicado por: loki160685 en Jueves 29 de Marzo de 2007, 03:23
Primero que nada te recomiendo que leas algun libro de C++ y con respecto a tu duda lo que tienes que hacer al insertar es que el ultimo nodo apunte a la raiz y al eliminar que el nodo anterior apunte al nodo actual (el que se quiere eliminar) en su parte siguiente, liberar la memoria del nodo que quieres eliminar y problema resuelto.
Título: Re: Listas Enlazadas
Publicado por: mamex en Viernes 30 de Marzo de 2007, 02:01
mmmm, y ademas yo soy el autor de ese codigo.

 :rolleyes:
Título: Re: Listas Enlazadas
Publicado por: lencho en Viernes 30 de Marzo de 2007, 03:07
Cita de: "mamex"
mmmm, y ademas yo soy el autor de ese codigo.

 :rolleyes:
 :o  :o  :o , que pena  :lol:  :lol:  :lol:

pero ni modo, este es el mundo de la pirateria de codigo :devil:  :devil:  :devil:

Todos compartimos

BYTE.
Título: Re: Listas Enlazadas
Publicado por: l2ebelde en Lunes 2 de Abril de 2007, 19:58
en algun momento dije que el codigo era mio???