}//busca coincidencias public void Buscar_posicion(string item) { int count = 1; Lista ap = this; if (!Vacia()) { while (ap.elemento != item && ap.sig != null) { ap = ap.sig; count++; } } if (ap.elemento == item) { Console.WriteLine("El elemento {0} SI existe en la lista en el nodo {1}", item, count); } else { Console.WriteLine("El elemento {0} NO existe en la lista", item); } }
public void Buscar_Nodo_Ocurrencia(string buscar) { Lista lis = this; int pos = 1; if (!Vacia()) { while (lis != null) { if (lis.Elemento.Contains(buscar)) { Console.WriteLine("'{0}' -> ESTA en el nodo {1}", buscar, pos); break; } lis = lis.Siguiente; pos++; } if (lis == null) { Console.WriteLine("'{0}' -> NO ESTA en el nodo", buscar); } } }
}//opcion 1 static void Main(string[] args) { ConsoleKeyInfo menu = default(ConsoleKeyInfo), op; //para uso del menu int pausa = 100; //pausa string cad; //cadena de strings Lista MiLista = new Lista(); do { try { Console.BackgroundColor = ConsoleColor.DarkBlue; Console.Clear(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Presione: \n\nLlenar Lista -> [A]\n\nVer Lista -> [S]\n\nInsertar un nodo antes de otro conocido -> [D]"); Console.WriteLine("\nInsertar un nodo en una posición dada -> [F]\n\nBuscar la primera ocurrencia de una cadena -> [G]"); Console.WriteLine("\nBuscar la primera ocurrencia de una cadena \ne indicar en qué nodo de la lista se encuentra -> [H]"); Console.WriteLine("\nBuscar todas las ocurrencias de una cadena \ne indicar cuántas ocurrencias existen y en qué nodos se ubican -> [J]"); Console.WriteLine("\nBuscar la primera ocurrencia de una cadena\no sub-string de una cadena e indicar en qué nodo se encuentra -> [K]"); Console.WriteLine("\nSalir -> [ESC]"); menu = Console.ReadKey(); switch (menu.Key) { case ConsoleKey.A: { Thread.Sleep(pausa); Llenar(MiLista); break; } case ConsoleKey.S: { do { Console.Clear(); MiLista.DesplegarLista(); Console.WriteLine("\nPresione [Espacio] para salir"); op = Console.ReadKey(); } while (op.Key != ConsoleKey.Spacebar); //lo hace hasta que el usuario presione espacio break; } case ConsoleKey.D: { if (!MiLista.Vacia()) { Thread.Sleep(pausa); Console.Clear(); Console.WriteLine("Ingrese una nueva cadena: "); cad = Console.ReadLine(); Console.WriteLine("Ingrese el elemento anterior: "); string anterior = Console.ReadLine(); MiLista.InsertarAntes(cad, anterior); // ingresa una cadena en un elemnto anterior } else { Console.Clear(); Console.WriteLine("Lista vacia"); Thread.Sleep(2000); } break; } case ConsoleKey.F: { if (!MiLista.Vacia()) { Thread.Sleep(pausa); Console.Clear(); Console.Write("Ingrese una nueva cadena: "); cad = Console.ReadLine(); Console.Write("Ingrese la posición entre 0 y {0}: ", MiLista.Contar - 1); byte pos = Convert.ToByte(Console.ReadLine()); MiLista.Insertar_posicion(pos, cad); //ingresa la cadena en una posicion } else { Console.Clear(); Console.WriteLine("Lista vacia"); Thread.Sleep(2000); } break; } case ConsoleKey.G: { if (!MiLista.Vacia()) { Thread.Sleep(pausa); Console.Clear(); Console.Write("¿Qué elemento desea buscar?: "); cad = Console.ReadLine(); do { Console.Clear(); MiLista.Buscar(cad); Console.WriteLine("\nPresione [Espacio] para salir"); op = Console.ReadKey(); } while (op.Key != ConsoleKey.Spacebar); } else { Console.Clear(); Console.WriteLine("Lista vacia"); Thread.Sleep(2000); } break; } case ConsoleKey.H: { if (!MiLista.Vacia()) { Thread.Sleep(pausa); Console.Clear(); Console.Write("¿Qué elemento desea buscar?: "); cad = Console.ReadLine(); do { Console.Clear(); MiLista.Buscar_posicion(cad); Console.WriteLine("\nPresione [Espacio] para salir"); op = Console.ReadKey(); } while (op.Key != ConsoleKey.Spacebar); } else { Console.Clear(); Console.WriteLine("Lista vacia"); Thread.Sleep(2000); } break; } case ConsoleKey.J: { if (!MiLista.Vacia()) { Thread.Sleep(pausa); Console.Clear(); Console.Write("¿Qué elemento desea buscar?: "); cad = Console.ReadLine(); do { Console.Clear(); MiLista.BuscarTodo(cad); Console.WriteLine("\nPresione [Espacio] para salir"); op = Console.ReadKey(); } while (op.Key != ConsoleKey.Spacebar); } else { Console.Clear(); Console.WriteLine("Lista vacia"); Thread.Sleep(2000); } break; } case ConsoleKey.K: { if (!MiLista.Vacia()) { Thread.Sleep(pausa); Console.Clear(); Console.Write("¿Qué elemento desea buscar?: "); cad = Console.ReadLine(); do { Console.Clear(); MiLista.Buscar_Nodo_Ocurrencia(cad); Console.WriteLine("\nPresione [Espacio] para salir"); op = Console.ReadKey(); } while (op.Key != ConsoleKey.Spacebar); } else { Console.Clear(); Console.WriteLine("Lista vacia"); Thread.Sleep(2000); } break; } case ConsoleKey.Escape: //salida { Console.Clear(); Console.WriteLine("Arigato"); Console.WriteLine("Presiona una tecla para salir"); Console.ReadKey(); break; } } } catch (Exception e)// algun error que no este incluido sera capturado por el catch { Console.WriteLine(e.Message); Console.ReadLine(); } } while (menu.Key != ConsoleKey.Escape); }
public Lista(string dato = null)//constructor { elemento = dato; sig = null; }