Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2015, 10:42
Cheko1986
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 7 meses
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. }