Está en la página 1de 10

CDIGO EN JAVA:

EJEMPLO LISTAS SIMPLES EN JAVA ALGORTIMOS (Insercin, Eliminacin, Concatenacin, Inversin)

public class Nodo { String nombre; Nodo next; public Nodo(){ } public Nodo(String nombre){ this.nombre=nombre; this.next = null; } }

public class Lista { Nodo top;

public Lista() { top = null; }

boolean EstaVacia()

{ if(top==null) return true; else return false; } void InsertaOrdenada(Nodo temp) { if(EstaVacia()) top=temp; else{ Nodo t1,t2; t1=top; t2=top; if(t1.nombre.compareTo(temp.nombre)>0){ // inserta al inicio temp.next = top; top = temp; }else{ while(t1.nombre.compareTo(temp.nombre)<=0) { t2=t1; t1=t1.next; if(t1==null) break; } if(t1!=null){ // nodo intermedio temp.next= t1; t2.next = temp;

}else{ // al final de la lista t2.next=temp; } } } } void InvierteLista(){ Nodo p,q; p=top; q=top; while(p!=null && q!=null){ q=p.next; if(q!=null) // no es el ltimo nodo (fin de la lista) { p.next=q.next; q.next=top; top=q; Imprime(); } } } void InvierteLista2(){ Nodo p=top, q = null, r; while (p != null) { r = q; q = p; p = p.next; q.next = r;

} top = q; } void Imprime(){ Nodo temp; temp=top; if(EstaVacia()) System.out.println("La lista est vaca"); else{ while(temp!=null) { System.out.print(temp.nombre+" "); temp=temp.next; } System.out.println(); } } boolean BorraNodo(String nombreBorrar){ if(EstaVacia()) return false; else{ if(top.nombre.equals(nombreBorrar)) //borra primer nodo { top=top.next; System.out.println("borr primer nodo"); return true; }else{ //borra cualquier nodo que no sea el primero Nodo p,q; p=top;

q=top; while((!p.nombre.equals(nombreBorrar)) && p!=null) { q=p; p=p.next; } if(p==null) //no encontr el nodo a eliminar { return false; }else q.next=p.next; return true; } } } void InsertaOrdenadaNoRepetidos(Nodo temp) { if(EstaVacia()) top=temp; else{ Nodo t1,t2; t1=top; t2=top; if(t1.nombre.compareTo(temp.nombre)>0){ // inserta al inicio temp.next = top; top = temp; }else{ while(t1.nombre.compareTo(temp.nombre)<=0) {

if(t1.nombre.compareTo(temp.nombre)==0) return; t2=t1; t1=t1.next; if(t1==null) break; } if(t1!=null){ // nodo intermedio temp.next= t1; t2.next = temp; }else{ // al final de la lista t2.next=temp; } } } } Lista UnionLista(Lista L2){ Lista L3 = new Lista(); L3 = L2; Nodo aux = top; while(aux!=null) { L3.InsertaOrdenadaNoRepetidos(aux); aux = aux.next; } return L3; } void Ordenar(Lista lista)

{ Nodo aux,temp; String vaux; aux=top; temp=top; while(aux!=null) { temp=aux; while(temp.next!=null) { temp=temp.next; if(aux.nombre.compareTo(temp.nombre)>0) { vaux=aux.nombre; aux.nombre=temp.nombre; temp.nombre=vaux; } } aux=aux.next; } }

void InsertaFinal(Nodo temp) { //Nodo aux; if(EstaVacia()) top=temp; else{ Nodo aux=top; while(aux.next!=null)

aux=aux.next; aux.next=temp; } } }

import java.util.Scanner; public class Demo { static Scanner entrada = new Scanner(System.in); public static void main(String[] args) { Lista lista1 = new Lista(); Lista lista2 = new Lista(); String palabra="",respuesta="n"; Nodo temp; /* do{ System.out.println("Lista 1"); System.out.println("Ingrese una palabra de la lista:"); palabra=entrada.next(); temp = new Nodo(palabra); lista1.InsertaOrdenada(temp); System.out.print("LISTA: "); lista1.Imprime(); System.out.println("Desea ingresar otra palabra s/n"); respuesta=entrada.next();

}while(respuesta.equals("s") || respuesta.equals("S")); lista1.Imprime(); System.out.println("Ingrese una palabra a eliminar:"); palabra=entrada.next(); if(lista1.BorraNodo(palabra)) System.out.println("Borrado exitoso"); else{ System.out.println("Palabra no encontrada en la lista"); } lista1.Imprime();*/ do{ System.out.println("Lista 1"); System.out.println("Ingrese una palabra de la lista:"); palabra=entrada.next(); temp = new Nodo(palabra); lista1.InsertaFinal(temp); System.out.println("Desea ingresar otra palabra s/n"); respuesta=entrada.next(); }while(respuesta.equals("s") || respuesta.equals("S")); lista1.Imprime(); lista1.Ordenar(lista1); lista1.Imprime(); /* do{ System.out.println("Lista 2"); System.out.println("Ingrese una palabra de la lista:"); palabra=entrada.next(); temp = new Nodo(palabra);

lista2.InsertaOrdenadaNoRepetidos(temp); System.out.println("Desea ingresar otra palabra s/n"); respuesta=entrada.next(); }while(respuesta.equals("s") || respuesta.equals("S")); */ //lista2.Imprime(); //Lista lista3 = lista1.UnionLista(lista2); //lista3.Imprime(); } }

También podría gustarte