Las listas doblemente enlazadas son estructuras de datos semejantes a las listas enlazadas simples.
La asignación de memoria es hecha al momento de la ejecución.
En cambio, en relación a la listas enlazada simple el enlace entre los elementos se hace gracias a dos punteros (uno que apunta hacia el elemento anterior y otro que apunta hacia el elemento siguiente).
El puntero anterior del primer elemento debe apuntar hacia NULL (el inicio de la lista).
El puntero siguiente del último elemento debe apuntar hacia NULL (el fin de la lista).
Para acceder a un elemento, la lista puede ser recorrida en ambos sentidos:
· comenzando por el inicio, el puntero siguiente permite el desplazamiento hacia el próximo elemento.
· comenzando por el final, el puntero anterior permite el desplazamiento hacia el elemento anterior.
CÓDIGO FUENTE
CLASE NODO
public class NodoDoble {
private int precioventa,stock,preciocompra;
private String nombre;
private NodoDoble siguiente;
private NodoDoble anterior;
public NodoDoble(int stock, int preciocompra, String nombre) {
this.preciocompra=preciocompra;
this.stock=stock;
this.nombre=nombre;
this.siguiente = null;
this.anterior = null;
}
public int getPrecioventa() {
return precioventa;
}
public void setPrecioventa(int precioventa) {
this.precioventa = precioventa;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
public int getPreciocompra() {
return preciocompra;
}
public void setPreciocompra(int preciocompra) {
this.preciocompra = preciocompra;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public NodoDoble getSiguiente() {
return siguiente;
}
public void setSiguiente(NodoDoble siguiente) {
this.siguiente = siguiente;
}
public NodoDoble getAnterior() {
return anterior;
}
public void setAnterior(NodoDoble anterior) {
this.anterior = anterior;
}
}
CLASE PRODUCTO
public class OperProducto {
NodoDoble inicio, fin;
public OperProducto() {
inicio = null;
fin = null;
}
public void ingresarnodo(int stock, int preciocompra, String nombre) {
NodoDoble nodo = new NodoDoble(stock, preciocompra, nombre);
if (inicio == null) {
inicio = nodo;
fin = inicio;
} else {
fin.setSiguiente(nodo);
nodo.setAnterior(fin);
nodo.setSiguiente(null);
fin = nodo;
}
}
public boolean buscarnodo(String nombre) {
NodoDoble nodo;
nodo = inicio;
boolean retorno = false;
while (nodo != null) {
if (nodo.getNombre() == nombre) {
retorno = true;
System.out.println("encontrado..");
break;
}
nodo = nodo.getSiguiente();
}
if (retorno == false) {
//System.out.println("no encontrado");
}
return retorno;
}
public int calcularprecioventa(String nombre) {
int preventa = 0;
NodoDoble temp = inicio;
if (buscarnodo(nombre)) {
preventa = (int) ((temp.getPreciocompra() + (temp.getPreciocompra() * 0.30)) +
((temp.getPreciocompra() + (temp.getPreciocompra() * 0.30)) * 0.18));
temp.setPrecioventa(preventa);
}
return preventa;
}
public String mostrarventa(String nombre) {
NodoDoble temp;
temp = inicio;
String cadena1 = "";
if (buscarnodo(nombre)) {
System.out.println(temp.getNombre() + "" + temp.getPrecioventa());
cadena1 = cadena1 + "Nombre:\t" + temp.getNombre() + "\nPrecio Venta:\t" +
temp.getPrecioventa() + "\n\n\n";
}
return cadena1;
}
public String mostrar() {
NodoDoble temp;
temp = inicio;
String cadena = "";
while (temp != null) {
cadena = cadena + "Nombre:\t" + temp.getNombre() + "\nPrecio Compra:\t" +
temp.getPreciocompra() + "\nPrecio Venta:\t" + temp.getPrecioventa() + "\nStock:\t" +
temp.getStock() + "\n";
temp = temp.getSiguiente();
}
return cadena;
}
public String invertido(){
NodoDoble temp;
temp = fin;
String cadena = "";
while (temp != null) {
cadena = cadena + "Nombre:\t" + temp.getNombre() + "\nPrecio Compra:\t" +
temp.getPreciocompra() + "\nPrecio Venta:\t" + temp.getPrecioventa() + "\nStock:\t" +
temp.getStock() + "\n";
temp = temp.getAnterior();
}
return cadena;
}
public String mostrarprecioacendente() {
NodoDoble temp;
temp = inicio;
String cadena = "";
while (temp != null) {
cadena = cadena + "Nombre:\t" + temp.getNombre() + "\nPrecio Compra:\t" +
temp.getPreciocompra() + "\nPrecio Venta:\t" + temp.getPrecioventa() + "\nStock:\t" +
temp.getStock() + "\n";
temp = temp.getSiguiente();
}
return cadena;
}
}
MAIN
public class menuproducto {
public static void main(String[] args) {
OperProducto op=new OperProducto();
op.ingresarnodo( 5, 10, "arroz");
op.ingresarnodo( 6, 2, "papa");
op.mostrar();
System.out.println("*****************");
}
}
No hay comentarios.:
Publicar un comentario