Jmdnbvs

Lista doblemente enlazada.

Oct 22nd, 2020 (edited)
670
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class ListaGenerica {
  2.  
  3.     class Nodo {
  4.  
  5.         int info;
  6.         Nodo ant, sig;
  7.     }
  8.  
  9.     private Nodo raiz;
  10.  
  11.     public ListaGenerica() {//1. constructor
  12.         raiz = null;
  13.     }
  14.  
  15.     void insertarPrimero(int x) {//2.Insertar Primero
  16.         Nodo nuevo = new Nodo();
  17.         nuevo.info = x;
  18.         if (raiz == null) {
  19.             raiz = nuevo;
  20.         } else {
  21.             nuevo.sig = raiz;
  22.             raiz.ant = nuevo;
  23.             raiz = nuevo;
  24.         }
  25.     }
  26.  
  27.     void insertarDespues(int x) {//3.Insertar Despues.
  28.         Nodo nuevo = new Nodo();
  29.         nuevo.info = x;
  30.         if (raiz == null) {
  31.             raiz = nuevo;
  32.         } else {
  33.             Nodo reco = raiz;
  34.             while (reco.sig != null) {
  35.                 reco = reco.sig;
  36.             }
  37.             reco.sig = nuevo;
  38.             nuevo.ant = reco;
  39.         }
  40.     }
  41.  
  42.     void insertarCualquierPosicion(int pos, int x) {//Insertar cualquier poscicion
  43.         if (pos <= contar() + 1) {
  44.             Nodo nuevo = new Nodo();
  45.             nuevo.info = x;
  46.             if (pos == 1) {
  47.                 nuevo.sig = raiz;
  48.                 if (raiz != null) {
  49.                     raiz.ant = nuevo;
  50.                 }
  51.                 raiz = nuevo;
  52.             } else if (pos == contar() + 1) {
  53.                 Nodo reco = raiz;
  54.                 while (reco.sig != null) {
  55.                     reco = reco.sig;
  56.                 }
  57.                 reco.sig = nuevo;
  58.                 nuevo.ant = reco;
  59.                 nuevo.sig = null;
  60.             } else {
  61.                 Nodo reco = raiz;
  62.                 for (int f = 1; f <= pos - 2; f++) {
  63.                     reco = reco.sig;
  64.                 }
  65.                 Nodo siguiente = reco.sig;
  66.                 reco.sig = nuevo;
  67.                 nuevo.ant = reco;
  68.                 nuevo.sig = siguiente;
  69.                 siguiente.ant = nuevo;
  70.             }
  71.         }
  72.     }
  73.  
  74.     public void BorrarAntes() {//5.Borrar antes
  75.         if (raiz != null) {
  76.             raiz = raiz.sig;
  77.             if (raiz != null) {
  78.                 raiz.ant = null;
  79.             }
  80.         }
  81.     }
  82.  
  83.     public void BorrarDespues() {
  84.         if (raiz != null) {
  85.             if (raiz.sig == null) {
  86.                 raiz = null;
  87.             } else {
  88.                 Nodo reco = raiz;
  89.                 while (reco.sig != null) {
  90.                     reco = reco.sig;
  91.                 }
  92.                 reco = reco.ant;
  93.                 reco.sig = null;
  94.             }
  95.         }
  96.     }
  97.  
  98.     public void borrarCualquier(int pos) {
  99.         if (pos <= contar()) {
  100.             if (pos == 1) {
  101.                 raiz = raiz.sig;
  102.                 if (raiz != null) {
  103.                     raiz.ant = null;
  104.                 }
  105.             } else {
  106.                 Nodo reco;
  107.                 reco = raiz;
  108.                 for (int f = 1; f <= pos - 2; f++) {
  109.                     reco = reco.sig;
  110.                 }
  111.                 Nodo prox = reco.sig;
  112.                 prox = prox.sig;
  113.                 reco.sig = prox;
  114.                 if (prox != null) {
  115.                     prox.ant = reco;
  116.                 }
  117.             }
  118.         }
  119.     }
  120.  
  121.     public void imprimirID() {//7.Imprimir Izq -> Der
  122.         Nodo reco = raiz;
  123.         while (reco != null) {
  124.             System.out.print(reco.info + "-");
  125.             reco = reco.sig;
  126.         }
  127.         System.out.println();
  128.     }
  129.  
  130.     public void imprimirDI() {//8.Imprimir Der -> Izq
  131.         if (raiz != null) {
  132.             Nodo reco = raiz;
  133.             while (reco.sig != null) {
  134.                 reco = reco.sig;
  135.             }
  136.             while (reco != null) {
  137.                 System.out.print(reco.info + "-");
  138.                 reco = reco.ant;
  139.             }
  140.             System.out.println();
  141.  
  142.         }
  143.     }
  144.  
  145.     public int contar() {//9. Contar Elementos
  146.         int cant = 0;
  147.         Nodo reco = raiz;
  148.         while (reco != null) {
  149.             reco = reco.sig;
  150.             cant++;
  151.         }
  152.         return cant;
  153.     }
  154.  
  155.     public void ordenarMenor_Mayor() {//10.Ordenar menos a mayor
  156.         int t = 1;
  157.         Nodo reco = raiz;
  158.         int tem = 0;
  159.         do {
  160.             reco = raiz;
  161.             Nodo sig = reco.sig;
  162.             while (reco.sig != null) {
  163.                 if (reco.info > sig.info) {
  164.                     tem = reco.info;
  165.                     reco.info = sig.info;
  166.                     sig.info = tem;
  167.                     reco = reco.sig;
  168.                     sig = sig.sig;
  169.                 } else {
  170.                     reco = reco.sig;
  171.                     sig = sig.sig;
  172.  
  173.                 }
  174.             }
  175.             t++;
  176.         } while (t <= contar());
  177.  
  178.     }
  179.  
  180.     public void imprimirPares() {//11.Imprimir Pares
  181.         Nodo reco = raiz;
  182.         while (reco != null) {
  183.             if (reco.info % 2 == 0) {
  184.                 System.out.println(reco.info + "-> Par");
  185.             }
  186.             reco = reco.sig;
  187.         }
  188.     }
  189.  
  190.     public void imprimirInpares() {//12.Imprimir Impares
  191.         Nodo reco = raiz;
  192.         while (reco != null) {
  193.             if (reco.info % 2 != 0) {
  194.                 System.out.println(reco.info + "-> impar");
  195.             }
  196.             reco = reco.sig;
  197.         }
  198.         System.out.println();
  199.     }
  200.  
  201.     public int Primero() {//13. primero
  202.         return raiz.info;
  203.     }
  204.  
  205.     public void Encontrar(int x) {//14. Encontrar elemento
  206.         Nodo reco = raiz;
  207.         int pos = 0;
  208.         while (reco != null) {
  209.             pos++;
  210.             if (reco.info == x) {
  211.                 System.out.println("Se ha encontrado [" + x + "] en la posicion: " + pos);
  212.             }
  213.             reco = reco.sig;
  214.         }
  215.         System.out.println("No se ha encontrado en elemento buscado.");
  216.     }
  217.  
  218.     public boolean vacia() {
  219.         if (raiz == null) {
  220.             return true;
  221.         } else {
  222.             return false;
  223.         }
  224.     }
  225.  
  226.     public static void main(String[] ar) {
  227.         ListaGenerica lg = new ListaGenerica();
  228.         lg.insertarCualquierPosicion(1, 500);
  229.         lg.insertarCualquierPosicion(2, 20);
  230.         lg.insertarCualquierPosicion(3, 101);
  231.         lg.insertarCualquierPosicion(4, 400);
  232.         lg.insertarCualquierPosicion(5, 53);
  233.  
  234. //        lg.insertarPrimero(2000);
  235. //        lg.insertarDespues(2000);
  236. //        lg.BorrarAntes();
  237. //        lg.BorrarDespues();
  238. // lg.borrarCualquier(3);
  239. //        lg.imprimirID();
  240. //        lg.imprimirDI();
  241. //        int contar = lg.contar();
  242. //        System.out.println("cantidad de nodos:"+contar);
  243. //        lg.ordenarMenor_Mayor();
  244. //        lg.imprimirPares();
  245. //        lg.imprimirInpares();
  246. //        int primero = lg.Primero();
  247. //        System.out.println("Primer elemento:"+primero);
  248. //        lg.Encontrar(101);
  249.     }
  250. }
RAW Paste Data