/* * Encontrar el nodo anterior * Si esta en el primer nodo se regresa al ancla * Si el dato no existe se regresa el ultimo nodo */ public Nodito getNoditoAnterior(int valor) { trabajo2 = ancla; while (trabajo2.getSiguiente() != null && trabajo2.getSiguiente().getDato() != valor) { trabajo2 = trabajo2.getSiguiente(); } return(trabajo2); }
// Indica si la lista esta vacia o no public bool isEmpty() { if (ancla.getSiguiente() != null) { return(false); } else { return(true); } }
// Obtener el tamaño de elementos... public int getSize() { trabajo = ancla; int size = 0; while (trabajo.getSiguiente() != null) { trabajo = trabajo.getSiguiente(); size++; } return(size); }
//Recorre toda la lista public void Transversa() { //Trabajo al Inicio trabajo = ancla; //Recorremos hasta encontrar el final while (trabajo.getSiguiente() != null) { //Avanzamos trabajo trabajo = trabajo.getSiguiente(); //Obtenemos el dato y lo mostramos int d = trabajo.getDato(); Console.Write("{0} -> ", d); } //Bajamos la linea Console.WriteLine(); }
// Regresa el indice del Nodo public int getIndice(int valor) { int n = -1; trabajo = ancla; while (trabajo.getSiguiente() != null) { trabajo = trabajo.getSiguiente(); n++; if (trabajo.getDato() == valor) { return(n); } } return(-1); }
//Obtener el nodo que se encuentra en indice especificado public Nodito getIndiceNodito(int indice) { if (isEmpty() || indice > getSize()) { return(ancla); } trabajo = ancla; int n = 0; while (trabajo.getSiguiente() != null && n != indice) { trabajo = trabajo.getSiguiente(); n++; } return(trabajo); }
// Regresa el nodo con la primera ocurrencia del dato public Nodito Buscar(int valor) { if (isEmpty()) { return(null); } trabajo2 = ancla; //Recorremos para ver si lo encontramos while (trabajo2.getSiguiente() != null) { trabajo2 = trabajo2.getSiguiente(); //Al encontrarlo lo regresamos... if (trabajo2.getDato() == valor) { return(trabajo2); } } //No se encontró, regresamos null return(null); }
//Agregar nuevo elemento a la lista public void Agregar(int valor) { //Trabajo al Inicio trabajo = ancla; //Recorremos hasta encontrar el final while (trabajo.getSiguiente() != null) { //Avanzamos trabajo trabajo = trabajo.getSiguiente(); } // Creamos el nuevo nodo Nodito temporal = new Nodito(); //Insertemos el dato temporal.setDato(valor); //Finalizamos correctamente temporal.setSiguiente(null); //Ligamos el ultimo nodo encontrado con el recien creado trabajo.setSiguiente(temporal); }
// Insertar un valor después de la primera ocurrencia del dato pasado a pDonde public void Insertar(int indiceInsercion, int valor) { // Encontramos la posición donde vamos a insertar trabajo = Buscar(indiceInsercion); if (trabajo == null) { return; } //Creamos el nodo temporal a insertar Nodito temporal = new Nodito(); temporal.setDato(valor); //Conectamos el temporal a la lista temporal.setSiguiente(trabajo.getSiguiente()); //Conectamos trabajo a temporal trabajo.setSiguiente(temporal); }
//Borrar elemento de la lista public void borrarElemento(int valor) { //Verificamos que se tengan datos. if (isEmpty()) { return; } // Buscamos los nodos con los que trabajaremos Nodito anterior = getNoditoAnterior(valor); Nodito encontrado = Buscar(valor); // Si no hay nodo a borrar, salimos if (encontrado == null) { return; } //Brincamos el nodo anterior.setSiguiente(encontrado.getSiguiente()); // Quitamos el actual de la lista. encontrado.setSiguiente(null); }