elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  lista circular (ingresando datos)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: lista circular (ingresando datos)  (Leído 5,826 veces)
Micah Genji

Desconectado Desconectado

Mensajes: 52


learn more to life


Ver Perfil
lista circular (ingresando datos)
« en: 10 Noviembre 2010, 07:09 am »

Holas  :D

Bueno explico: tengo desarrollado el metodo de insercion en una lista circular, aunque lo desarrolle segun la teoria de esta accion (ingresar)

Veamos:
Código
  1. static nodo insertar(nodo lista, int n)
  2.        {
  3.            nodo nuevo = new nodo();
  4.            nuevo.nro = n;
  5.            if (lista == null)
  6.            {
  7.                lista = nuevo;
  8.                lista.sgte = nuevo;
  9.            }
  10.            else
  11.            {
  12.                nuevo.sgte = lista.sgte;
  13.                lista.sgte = nuevo;
  14.            }
  15.            return lista;
  16.        }
Y bueno mi metodo mostrar que va asi:
Código
  1. static void mostrar(nodo lista)
  2.        {
  3.            nodo aux = lista;
  4.            if (lista == null) Console.Write("Lista vacia !!!");
  5.            else
  6.            {
  7.                do
  8.                {
  9.                    Console.Write(aux.nro + " ");
  10.                    aux = aux.sgte;
  11.                } while (aux != lista);
  12.            }
  13.            Console.ReadLine();
  14.        }

Bien el detalle, es que este muestra de manera incorrecta.
Pero estuve realizando pruebas de escritorio y mi error esta en ingresar sobre todo en el "else", solo que no puedo implementarlo correctamente.

Por ejemplo: ingreso -> 1 2 3 4
entonce muestra: Lista: 1 4 3 2

Alguna idea, recomendacion de hacerlo.

Gracias  :)


En línea

Only two things are infinite, the universe and human stupidity, and I'm not sure about the former : A.E
.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: lista circular (ingresando datos)
« Respuesta #1 en: 11 Noviembre 2010, 05:41 am »

Micah Genji voz podrias poner el codigo de la clase "nodo" o de ser posible todo tu proyecto para ver mejor donde esta el error!!!!


En línea

Simplemente .::IT::.
ignorantev1.1


Desconectado Desconectado

Mensajes: 617


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: lista circular (ingresando datos)
« Respuesta #2 en: 11 Noviembre 2010, 06:00 am »

Código
  1. static nodo insertar(nodo lista, int n)
  2.        {
  3.            nodo nuevo = new nodo();
  4.            nuevo.nro = n;
  5.            if (lista == null)
  6.            {
  7.                lista = nuevo;
  8.                lista.sgte = nuevo;
  9.            }
  10.            else
  11.            {
  12.                nodo aux;
  13.                aux=lista.sgte; /* No se apuntar! sorry /*
  14.                whiele(aux!=lista){
  15.                        aux=aux.sgte; /*insisto, no se utilizar punteros aqui*/
  16.                }
  17.                aux.sgte=nuevo;
  18.                nuevo.sgte = lista;/*es logico por que siempre el ultimo elemento se enlazara al primero*/
  19.            }
  20.            return lista;
  21.        }

Un nodo auxiliar que atravez de un bucle recorra los elementos, hasta que encuentre el elemento que en "sgte" contenga "lista" haces la insercion.

No se nada de .NET, entre aqui por que llevo horas sin tener nada que hacer, si estoy mal en la sintaxis no me regañen por favor  :-[, corrijanme :xD

En línea

Lunfardo


Desconectado Desconectado

Mensajes: 568


Ver Perfil
Re: lista circular (ingresando datos)
« Respuesta #3 en: 12 Noviembre 2010, 08:45 am »

en la listas circulares es mas facil guardar un "puntero" al primero y un "puntero" al ultimo nodo, el siguiente del ultimo tiene que apuntar al primero.

asi se facil  ;D
En línea

Micah Genji

Desconectado Desconectado

Mensajes: 52


learn more to life


Ver Perfil
Re: lista circular (ingresando datos)
« Respuesta #4 en: 15 Noviembre 2010, 05:14 am »

bueno gracias por su interes en este pequeño problema.
estuve verificando la sugerencia de ignorantev1.1; en:
Código
  1. aux = lista.sgte creo
bien creo ahora veo por que no usaba while primero.
en fin el algoritmo sigue erroneo.
revise con la prueba de escritorio y siempre el nuevo nodo termina siendo el segundo nodo de la lista:
Código
  1. aux.sgte = nuevo;
  2. nuevo.sgte = lista;

por lo que veo el aux avanza hasta llegar  a la misma lista, y crea el paradigma de todo este problema.

con la sugerencia de ignorantev1.1 termina asi:
lista: 1 2 3 4
entonces muestra asi: 1 4

bien hasta ahora el algoritmo anteriormente planteado sigue siendo valido dado a q muestra los numeros ingresados.

bueno a seguir observando este paradigma  :rolleyes:

a bueno la clase nodo solo es una enlazada simple:
Código
  1. public class nodo
  2.    {
  3.        public int nro;
  4.        public nodo sgte;
  5.    }

saludos
En línea

Only two things are infinite, the universe and human stupidity, and I'm not sure about the former : A.E
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Lista circular en C bien implementada?
Programación C/C++
samur88 0 4,439 Último mensaje 2 Enero 2011, 02:31 am
por samur88
ingresando datos unidimensionalmente
Programación C/C++
ryan parker 3 2,154 Último mensaje 3 Mayo 2012, 16:57 pm
por neveldine
Lista circular simple (LCS)
Programación C/C++
Cpp 1 2,322 Último mensaje 11 Diciembre 2014, 01:50 am
por engel lex
realizar un programa que ingresando una palabra por teclado ella se mueva. « 1 2 »
Programación C/C++
fernandoprog1 16 5,174 Último mensaje 22 Junio 2015, 19:46 pm
por fernandoprog1
Lista circular simple de enteros con 1 puntero
Programación C/C++
Beginner Web 6 2,125 Último mensaje 6 Octubre 2018, 08:29 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines