Ejecución ejercicio1 |
Ejecución ejercicio2 |
2.Crear una lista simple enlazada de número enteros, se desea añadir un nodo entre dos nodos consecutivos; el dato del nuevo nodo debe ser la diferencia en valor absoluto de los dos nodos. Ejemplo si tengo la siguiente lista | 20 | | 43 | | 17 | | 4 | | 11 | Se dese insertar un dato entre 43 y 17. Reviso que exista la secuencia Luego calculo el valor absoluto de (43-17) Inserto entre esos elementos. | 20 | | 43 | | 26 | | 17 | | 4 | | 11 | import javax.swing.JOptionPane; public class Ejercicio2 { public static void main(String[] args) { Lista Lista1= new Lista(); Lista1.agregarInicio(17); Lista1.agregarInicio(43); Lista1.agregarInicio(20); Lista1.agregarFin(4); Lista1.agregarFin(11); System.out.println("Lista inicial"); Lista1.imprimir(); int agregar = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el número anterior al nuevo a ingresar")); Lista1.agregarNodo(agregar); System.out.println("Lista con el nuevo número:"); Lista1.imprimir(); public class Nodo { //Declaración de atributos private int numero; private Nodo siguiente; //Constructor Nodo null public Nodo(int numero) { this.numero=numero; this.siguiente=null; } //Constructores public Nodo(int numero, Nodo siguiente) { this.numero=numero; this.siguiente=siguiente; } //Métodos get y set de la clase Nodo public int getNumero() { return numero; } public void setNumero(int numero) { this.numero= numero; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } } public class Lista { private Nodo inicio; private Nodo fin; public Lista() { inicio=fin=null; } //Método que permite agregar un elemento al inicio de la lista public void agregarInicio(int info) { Nodo nuevo=new Nodo(info, inicio); if( inicio == null) { Inicio = fin = nuevo; } Inicio = nuevo; } //Método que permite agregar un elemento al fin de la lista public void agregarFin(int info) { Nodo nuevo=new Nodo(info, null); if ( inicio == null) { inicio=fin=nuevo; } else { fin . setSiguiente(nuevo); fin = nuevo; } } //Método que permite imprimir los elementos de la lista public void imprimir() { Nodo aux=inicio; while(aux!=null) { System.out.println(aux.getNumero()); aux=aux.getSiguiente(); } } //Método que permite eliminar el nodo public void eliminarNodo(int num) { if(inicio!=null) { if((inicio==fin)&&(inicio.getNumero()==num)) { inicio=fin=null; } else if(inicio.getNumero()==num) { inicio=inicio.getSiguiente(); } else { Nodo anterior=inicio; Nodo siguiente=inicio.getSiguiente(); while((siguiente!=null)&&(siguiente.getNumero()!=num)) { anterior=siguiente; siguiente=siguiente.getSiguiente(); } if(siguiente!=null) { anterior.setSiguiente(siguiente.getSiguiente()); if(siguiente==fin) { fin=anterior; } } } } } //Metodo aue permite agregar un nuevo nodo public void agregarNodo(int num) { if(inicio!=null) { if(inicio==fin && inicio.getNumero()==num) { inicio=fin=null; } else if(inicio.getNumero()==num) { inicio = inicio.getSiguiente(); } else { Nodo anterior = inicio; Nodo siguiente = inicio.getSiguiente(); while(siguiente!=null && anterior.getNumero()!=num) { anterior = siguiente; siguiente = siguiente.getSiguiente(); } if (siguiente!=null) { Nodo nuevo = new Nodo(calculo(anterior.getNumero(),siguiente.getNumero()),siguiente); anterior.setSiguiente(nuevo); nuevo.setSiguiente(siguiente); if(siguiente == fin) { fin = anterior; } } } } } //Método que permite calcular el valor absoluto entre números ubicados en nodos. public int valAbs(int primer, int segundo) { int num = primer -segundo; num =Math.abs(num); return num; } }?
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ejercicio1; import java.util.Scanner; /** * * */ public class Ejercicio1 { /** * @param args the command line arguments */ public static void main(String[] args) { Scanner entrada=new Scanner(System.in); Lista array=new Lista(); int numero=5,dato; for (int i = 0; i < numero; i++) { System.out.println("\nIngrese el elemento" +(i+1)+ "de la lista"); numero=entrada.nextInt(); array . agregarInicio(numero); } //Se invoca al método imprimir para que muestre la lista System.out.println("Datos ingresados"); array.imprimir(); System.out.println("\nLista ordenada en forma descendente"); array.ordenar(n); array.promedio();}} public class Nodo { //atributos de la clase NODO private int numero; private Nodo siguiente; //constructor con parámetros public Nodo(int numero, Nodo siguiente) { this.numero = numero; this.siguiente = siguiente; } //constructor con Nodo siguiente apuntado a null public Nodo(int numero) { this.numero = numero; this.siguiente = null; } //Métodos GEtters y setters de la clase Nodo public int getNumero() { return numero; } public void setNumero(int numero) { this.numero = numero; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } } public class Lista { //atributos de la clase Lista private Nodo inicio; private Nodo fin; public Lista() { inicio=fin=null; } //Metodo que permite agregar un numero al inicio public void agregarInicio(int info) { Nodo nuevo=new Nodo(info, inicio); if(inicio==null) { inicio=fin=nuevo; } inicio=nuevo; } //Metodo que permite agregar un numero al fin public void agregarFin(int info) { Nodo nuevo=new Nodo(info, null); if(inicio==null) { inicio=fin=nuevo; } else { fin.setSiguiente(nuevo); fin=nuevo; } } //Metodo para los datos de la lista public void imprimir() { Nodo aux=inicio; while(aux!=null) { System.out.println(aux.getNumero()); aux=aux.getSiguiente(); } } //Metodo que permite ordenar de forma descendente la lista public void ordenar(int info) { int aux; Nodo recorrer=inicio; int array[]=new int [info]; for (int i = 0; i < info; i++) { array[i]=recorrer.getNumero(); recorrer=recorrer.getSiguiente(); } for (int k = 0; k < info; k++){ for (int j=k+1; j < info; j++){ if(array [k] < array [j]){ { aux = array [ k ]; array [ k ] = array [ j ]; array [ j ]= aux; } } } Lista nueva=new Lista(); for (int f = 0; f < info ; f ++) { nueva . agregarFin (array [ f ]); } nueva.imprimir(); } //Método que permite calcular el promedio de los elementos de la lista public void promedio() { Nodo aux=inicio; int suma=0; double promedio; while(aux!=null) { suma= suma+ aux.getNumero(); aux=aux.getSiguiente(); } promedio=suma/6; System.out.println("El promedio de los elementos de la lista es:"+promedio); } }?
package colasjava; /** * * @author JV PC LDU */ public class COLASJAVA { /** * @param args the command line arguments */ public static void main(String[] args) { Cola cola = new Cola(4); cola.print(); cola.remove(); cola.insert("Hola"); cola.insert(2); cola.insert("java"); cola.insert(9); cola.insert(8888); cola.remove(); cola.remove(); cola.remove(); cola.remove(); cola.remove(); } } CLASE COLA public class Cola { private Object[] cola; private int frente; private int fin; public Prueba(int tamanio) { cola = new Object[tamanio]; frente = fin = -1; } public boolean isEmpty() { return frente == fin; } public boolean isFull() { return fin == cola.length-1; } public void insert(Object elemento) { if(isFull()) System.out.println("La cola esta llena, elimine datos!"); else cola[++fin] = elemento; } public Object remove() { if(isEmpty()) { System.out.println("La cola esta vacia, inserte datos!"); return "Cola vacia"; } else return cola[++frente]; } public void print() { if(isEmpty()) System.out.println("La cola esta vacia!"); else if(frente == -1) { for(int i = 0; i <= fin; i++) { System.out.println(cola[i]); } } else { for(int j = frente; j <= fin; j++) { System.out.println(cola[j]); } } } }?
package pilas; import java.util.Stack; /** * * @author JV PC LDU */ public class Pilas { /** * @param args the command line arguments */ public static void main(String[] args) { Stack Pila=new Stack(); //push se utiliza para ingresar un dato en la pila Pila.push(100); // va a ser el índice 0 Pila.push(90); // va a ser el índice 1 Pila.push(80); // va a ser el índice 2 Pila.push(70); // va a ser el índice 3 Pila.push("en Pilas de JAVA "); // va a ser el índice 4 Pila.push("ciertas operaciones "); // va a ser el índice 5 Pila.push("el funcionamiento de "); // va a ser el índice 6 Pila.push("Se muestra"); // va a ser el índice 7 Pila.push("En el siguiente programa:"); // va a ser el índice 8 //observando los datos ingresados se muestra claramente la //característica LIFO (last in, first out (último en entrar, primero en salir) //como se puede observar en el código superior, en las pilas podemos insertar //todo tipo de datos, en este caso Strings y enteros. //peek() método nativo de la clase stack para observar el último dato de la pila. System.out.println("El último elemento introducido en la pila es: "+Pila.peek()); System.out.println(""); System.out.println(""); do{ //pop()método nativo de la clase stack para imprimir los datos de la pila. System.out.println(Pila.pop()); }while(Pila.empty()==false); } }?
JAVA
|
|
DIFERENCIAS FUNDAMENTALES ENTRE PILAS Y
COLAS.
|
|
PILAS
|
COLAS
|
En las pilas, se puede acceder a los elementos de las listas sólo a
través de la cima de la misma.
|
En las colas, se pueden acceder a los elementos de las listas por los
dos extremos (inicial y final)
|
En las pilas, los elementos se eliminan de la manera ( last in, first
out) es decir el último que entra es el primero que sale.
|
En las colas, los elementos se eliminan en el orden de llegada.
|
Las pilas son consideradas estructuras de datos LIFO (last in, first
out)
|
Las colas son consideradas estructuras de datos FIFO (first in, first
out)
|
En las pilas solo se pueden agregar elementos por la cima.
|
En las bicolas se pueden agregar elementos por dos extremos (fin,
inicio)
|
Arreglos circulares que permiten la creación de las "Colas circulares" |