Generar lista doblemente enlazada
1. con inserción al inicio
2. con inserción al final
3. eliminar un elemento
4. modificar un elemento
5. impresión ascendente y descendente
6. copiar los elemento a una lista simple
1. con inserción al inicio
2. con inserción al final
3. eliminar un elemento
4. modificar un elemento
5. impresión ascendente y descendente
6. copiar los elemento a una lista simple
Código Aquí
package listadoblementeenlazada;
import java.util.Scanner;
public class ListaDoblementeEnlazada {
static class Nodo {
int dato;
Nodo ant;
Nodo sig;
}
static class NodoSimple {
int dato;
NodoSimple sig;
}
public static int validarNumero() {
Scanner leer = new Scanner(System.in);
int valorNum = 0;
boolean numero = false;
while (!numero) {
try {
String
cadena = leer.nextLine();
valorNum = Integer.parseInt(cadena);
numero = true;
} catch (Exception e) {
System.out.println("Error,
ingrese un numero");
}
}
return valorNum;
}
public static void main(String[] args) {
// Insercion al
incio
System.out.println("Ingrese el multiplo m:");
int m = validarNumero();
System.out.println("Ingrese el tamaño n:");
int n = validarNumero();;
Nodo top = null;
for (int i = 1; i <= n; i++) {
Nodo temp = new Nodo();
temp.dato = i * m;
temp.ant = null;
if (top == null) {
temp.sig = null;
} else {
temp.sig = top;
top.ant = temp;
}
top = temp;
}
System.out.println("Impresion de lista insercion al inicio");
//Impresion ascendente
Nodo temp1 = top;
while (temp1 != null) {
System.out.println("" +
temp1.dato);
temp1 =
temp1.sig;
}
// Insercion al final
Nodo top1 = null;
Nodo ultimo = null;
Nodo temp;
for (int i = 1; i <= n; i++) {
temp = new Nodo();
temp.dato = i * m;
temp.sig = null;
if (top1 == null) {
temp.ant = null;
top1 = temp;
} else {
ultimo.sig = temp;
temp.ant = ultimo;
}
ultimo = temp;
}
System.out.println("Impresion de lista insercion al final");
//Impresion ascendente
temp1 = top1;
while (temp1 != null) {
System.out.println("" +
temp1.dato);
temp1 =
temp1.sig;
}
System.out.println("Impresion al de lista insercion al inicio ascendente");
//Impresion ascendente
temp1 = top;
while (temp1 != null) {
System.out.println("" +
temp1.dato);
temp1 =
temp1.sig;
}
System.out.println("Impresion al de lista insercion al inicio descendente");
//Impresion desendente
temp1 = top;
while (temp1.sig != null) {
temp1 = temp1.sig;
}
while (temp1 != null) {
System.out.println("" +
temp1.dato);
temp1 =
temp1.ant;
}
System.out.println("Ingrese
el elemento a eliminar:");
//Eliminar
int buscar = validarNumero();
temp1 = top;
while (temp1.dato != buscar
&& temp1.sig!=null) {
temp1 = temp1.sig;
}
if(temp1.sig==null && temp1==null){
System.out.println("No
se encontro el elemento");
}else{
temp1.ant.sig = temp1.sig;
temp1.sig.ant = temp1.ant;
}
System.out.println("Impresion eliminar");
//Impresion ascendente
temp1 = top;
while (temp1 != null) {
System.out.println("" +
temp1.dato);
temp1 =
temp1.sig;
}
System.out.println("Ingrese el elemento a modificar:");
//modificar
buscar = validarNumero();
temp1 = top;
while (temp1.dato != buscar && temp1.sig!=null)
{//temp1.sig==null para que no se haga un bucle infinito
temp1 =
temp1.sig;
}if(temp1.sig==null && temp1==null){
System.out.println("No
se encontro el elemento");
}else{
System.out.println("Ingrese el numero a modificar:");
int modificar = validarNumero();
temp1.dato = modificar;
}
System.out.println("Impresion al modificar");
//Impresion ascendente
temp1 = top;
while (temp1 != null) {
System.out.println("" +
temp1.dato);
temp1 = temp1.sig;
}
//
temp1=top;
NodoSimple top2 =
null;
NodoSimple ultimo1 = null;
NodoSimple temp2;
while(temp1!=null){
//for (int i = 1; i <= n; i++) {
temp2 = new NodoSimple();
temp2.dato = temp1.dato;
temp2.sig = null;
if (top2 == null) {
top2 = temp2;
} else {
ultimo1.sig = temp2;
}
ultimo1 = temp2;
temp1=temp1.sig;
}
System.out.println("Lista doblemente enlazada pasada a lista
simple");
temp2=top2;
while (temp2 != null) {
System.out.println("" +
temp2.dato);
temp2 =
temp2.sig;
}
}
}
Corrida
No hay comentarios:
Publicar un comentario