Foros del Web » Programación para mayores de 30 ;) » .NET »

Listas Enlazadas C#

Estas en el tema de Listas Enlazadas C# en el foro de .NET en Foros del Web. Buen dia Solicito ayuda para poder completar este trabajo, necesito modificar este codigo para que, al ejecutarse el programa, solicite continuamente la captura de un ...
  #1 (permalink)  
Antiguo 28/09/2015, 10:42
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Pregunta Listas Enlazadas C#

Buen dia

Solicito ayuda para poder completar este trabajo, necesito modificar este codigo para que, al ejecutarse el programa, solicite continuamente la captura de un valor que será insertado en la lista enlazada hasta que el usuario ya no desee continuar con dicho registro. Cabe mencionar que este código esta limitado a insertar 3 elementos en la lista. Hasta donde yo se, necesito insertar un while (true) en donde inicia el programa pero realmente no se como insertarlo, podrian ayudarme?

Código C:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace listaenlazada
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. ListaEnlazada lista = new ListaEnlazada();//Se crea el objeto lista enlazada
  13. lista.Insertar(9);//Se inserta un nodo a la lista con un atributo de tipo entero
  14. lista.Insertar(12);
  15. lista.Insertar(4);
  16. lista.Mostrar();//_Muestra la lista enlazada ordenada del menor al mayor de los tipos enteros
  17. lista.Mostrar();
  18. lista.Borrar(4);//Borra un nodo de la lista enlazada
  19.  
  20.  
  21. lista.Mostrar();
  22. Console.ReadKey();
  23. }
  24. }
  25. class Nodo
  26. {
  27. public int valor;
  28. public Nodo sig;
  29. public Nodo(int v, Nodo s)
  30. {
  31. valor = v;
  32. sig = s;
  33. }
  34. }
  35. class ListaEnlazada
  36. {
  37. Nodo primero;
  38. Nodo actual;
  39. public ListaEnlazada()
  40. {
  41. }
  42. public void Insertar(int v)
  43. {
  44. Nodo anterior;
  45. if (ListaVacia() || primero.valor > v)
  46. {
  47. primero = new Nodo(v, primero);
  48. }
  49. else
  50. {
  51. anterior = primero;
  52. while (anterior.sig != null && anterior.sig.valor <= v)
  53. anterior = anterior.sig;
  54. anterior.sig = new Nodo(v, anterior.sig);
  55. }
  56. }
  57. public void Mostrar()
  58. {
  59. Nodo aux;
  60. aux = primero;
  61. while (aux != null)
  62. {
  63. Console.Write(aux.valor + "->");
  64. aux = aux.sig;
  65. }
  66. Console.Write(" null");
  67. Console.WriteLine();
  68. }
  69. public void Siguiente()
  70. {
  71. if (actual != null)
  72. actual = actual.sig;
  73. }
  74. public void Primero()
  75. {
  76. actual = primero;
  77. }
  78. public void Borrar(int v)
  79. {
  80. Nodo anterior, nodo;
  81. nodo = primero;
  82. anterior = null;
  83. while (nodo != null && nodo.valor < v)
  84. {
  85. anterior = nodo;
  86. nodo = nodo.sig;
  87. }
  88. if (nodo == null || nodo.valor != v)
  89. return;
  90. else
  91. {
  92. if (anterior == null)
  93. primero = nodo.sig;
  94. else
  95. anterior.sig = nodo.sig;
  96. }
  97. }
  98. public bool ListaVacia()
  99. {
  100. if (primero == null)
  101. return true;
  102. return false;
  103. }
  104. public void Ultimo()
  105. {
  106. Primero();
  107. if (!ListaVacia())
  108. while (actual.sig != null)
  109. Siguiente();
  110.  
  111. }
  112. public bool Actual()
  113. {
  114. if (actual != null)
  115. return true;
  116. return false;
  117. }
  118. public int ValorActual()
  119. {
  120. return actual.valor;
  121. }
  122. }
  123. }
  #2 (permalink)  
Antiguo 28/09/2015, 11:14
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Listas Enlazadas C#

Hola. Una serie de sugerencias para mejorar la legibilidad de tu código:

- Los miembros públicos (como Nodo.valor y Nodo.siguiente) tendrían que tener mayúsculas como si fueran nombres propios (es decir, Nodo.Valor y Nodo.Siguiente). Además de esto se recomienda no usar campos públicos sino propiedades, pero supongo que todavía no llegaste a ver qué son las propiedades.

- Los miembros privados (como ListaEnlazada.primero y ListaEnlazada.actual) se les antepone un _ (guión bajo) al nombre, para diferenciarlos de las variables locales en el código e identificar rápidamente que son campos privados. Tendrían que ser _primero y _actual, respectivamente.

- Los nombres de los métodos en general tienen que ser verbos, o indicar claramente la acción que realizan. Los métodos ListaEnlazada.Primero() y ListaEnlazada.Ultimo() no tienen nombres claros. Yo usaría MoverAlPrimero() y MoverAlUltimo(), o algo por el estilo, que indique realmente lo que hace el método. Cuando un nombre de un método no es un verbo, uno inmediatamente lo asocia con un valor de retorno (es decir, a simple vista la costumbre me diría que ListaEnlazada.Primero() devuelve el primer elemento, y no es esto lo que ocurre).

- Las sentencias de tipo if (condicion) return true else return false o similares resultan redundantes. El resultado de evaluar (condicion) siempre es un bool (es decir, true o false) con lo cuál uno podría cambiar esto:

Código C#:
Ver original
  1. if (primero == null)
  2.     return true;
  3. return false;

por esto:

Código C#:
Ver original
  1. return primero == null;

Por supuesto nada de esto resuelve tu pregunta, ya que considero que eso lo tenés que resolver vos mismo. Solo son sugerencias para que mejores la calidad de tu código, de a poco.
  #3 (permalink)  
Antiguo 29/09/2015, 00:13
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Listas Enlazadas C#

Cita:
Iniciado por agleiva Ver Mensaje
Hola. Una serie de sugerencias para mejorar la legibilidad de tu código:

- Los miembros públicos (como Nodo.valor y Nodo.siguiente) tendrían que tener mayúsculas como si fueran nombres propios (es decir, Nodo.Valor y Nodo.Siguiente). Además de esto se recomienda no usar campos públicos sino propiedades, pero supongo que todavía no llegaste a ver qué son las propiedades.

- Los miembros privados (como ListaEnlazada.primero y ListaEnlazada.actual) se les antepone un _ (guión bajo) al nombre, para diferenciarlos de las variables locales en el código e identificar rápidamente que son campos privados. Tendrían que ser _primero y _actual, respectivamente.

- Los nombres de los métodos en general tienen que ser verbos, o indicar claramente la acción que realizan. Los métodos ListaEnlazada.Primero() y ListaEnlazada.Ultimo() no tienen nombres claros. Yo usaría MoverAlPrimero() y MoverAlUltimo(), o algo por el estilo, que indique realmente lo que hace el método. Cuando un nombre de un método no es un verbo, uno inmediatamente lo asocia con un valor de retorno (es decir, a simple vista la costumbre me diría que ListaEnlazada.Primero() devuelve el primer elemento, y no es esto lo que ocurre).

- Las sentencias de tipo if (condicion) return true else return false o similares resultan redundantes. El resultado de evaluar (condicion) siempre es un bool (es decir, true o false) con lo cuál uno podría cambiar esto:

Código C#:
Ver original
  1. if (primero == null)
  2.     return true;
  3. return false;

por esto:

Código C#:
Ver original
  1. return primero == null;

Por supuesto nada de esto resuelve tu pregunta, ya que considero que eso lo tenés que resolver vos mismo. Solo son sugerencias para que mejores la calidad de tu código, de a poco.
Gracias por tus consejos, solo que si, eso no me ayuda, pero de todas formas gracias
  #4 (permalink)  
Antiguo 29/09/2015, 09:14
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Listas Enlazadas C#

Esto realimente parece una tarea de la univerdad, listas de listas.

Te sugiero que juegues con tu codigo, y obvio que tengas tu papelito de transiciones...

Para que puedas entender que haces y que te falta, yo ya batalle con eso, no se vale que quieras que hagamos tus tareas aquí

Saludos!!
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....

Etiquetas: c#, enlazadas, listas, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:11.