Principales respuestas
Ayuda con este programa

Pregunta
-
Buenas noches a todos. Tengo un problema en el método Buscar. Lo que pasa es que quiero obtener la posición en la que se encuentra el nodo ingresado. De antemano, muchas gracias.
namespace Cola
{
class Cola
{
class Nodo
{
public int edad;
public Nodo sig;
}
private Nodo frente;
private Nodo final;
public void Insertar(int x)
{
Nodo nuevo;
nuevo = new Nodo();
nuevo.edad = x;
nuevo.sig = null;
if (frente == null)
{
frente = nuevo;
}
else
{
final.sig = nuevo;
}
final = nuevo;
}
public void Buscar()
{
Nodo nuevo = new Nodo();
nuevo = frente;
int pos;
bool encontrado = false;
Console.Write(" Ingrese un numero ");
int nodobuscado = int.Parse(Console.ReadLine());
if (frente != null)
{
while (nuevo != null && encontrado != true)
{
if (nuevo.edad == nodobuscado)
{
Console.WriteLine("\n Nodo con el dato ( {0} ) encontrado", nodobuscado);
encontrado = true;
for (int x = 0; x < 10; x++)
{
{
pos = pos + ' ' + x;
}
}
Console.WriteLine("El elemento se encuentra en la posicion:{0}", pos);
}
nuevo = nuevo.sig;
}
if (!encontrado)
{
Console.WriteLine("\n elemento no encontrado\n");
}
}
else
{
Console.WriteLine("\n La cola se encuentra vacía\n");
}
Console.ReadKey();
}
static void Main(string[] args)
{
Cola NuevaCola = new Cola();
NuevaCola.Insertar(18);
NuevaCola.Insertar(29);
NuevaCola.Buscar();
}
}
}
Respuestas
-
>>me ha funcionado con el primer nodo, al ingresar los demás me sigue mostrando el primer nodo.
eso es porque no estas iterando ls nodos, te queda solo en el primero
analizaste el codigo que puse de ejemplo?
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator lunes, 19 de noviembre de 2018 16:48
- Marcado como respuesta Pablo RubioModerator lunes, 26 de noviembre de 2018 18:24
Todas las respuestas
-
hola
Podrias explicarte un poco mas completo, no esta muy claro
Veo un metodo Buscar() en el cual aplicas un loop buscando por la propiedad "edad" pero no entiendo despues para que esta ese
for (int x = 0; x < 10; x++)
no veo ninguna utilidad
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
-
Ahora que analizo el codigo no veo como cambias la instancia de la variable "nuevo", que que al principio usas
Nodo nuevo = new Nodo();
pero en el while() como cambias los diferentes nodos para validad la edad ?
la posicio se puede determinar mientras vas comparando los nodos, no hace falta un for separado
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
quizas si querias iterar podrias usar
int posicion = 0; Nodo nodoActual = this.frente; while(nodoActual == this.final){ Console.Write("Ingrese un numero: "); int edad = int.Parse(Console.ReadLine()); if(nodoActual.edad == edad){ break; } nodoActual = nodoActual.sig; posicion ++; } Console.WriteLine("\n Nodo con el dato ( {0} ) encontrado", nodoActual.edad); Console.WriteLine("El elemento se encuentra en la posicion:{0}", posicion);
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
-
>>me ha funcionado con el primer nodo, al ingresar los demás me sigue mostrando el primer nodo.
eso es porque no estas iterando ls nodos, te queda solo en el primero
analizaste el codigo que puse de ejemplo?
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator lunes, 19 de noviembre de 2018 16:48
- Marcado como respuesta Pablo RubioModerator lunes, 26 de noviembre de 2018 18:24