public class Nodo {
private Object valor;
private Nodo siguiente;
public Nodo(Object val,Nodo sig){
this.valor = val;
this.siguiente = sig;
}
public Object getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
public Nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;
}
}
public class ListaEnlazada {
//Creamos dos Nodos, que seran el primero y el ultimo nodo de nuestra lista
private Nodo primero,ultimo;
//Variable que llevara el tamaño de la lista
private int tamaño;
//Constructor. Inicializacion de las variables
public ListaEnlazada(){
ultimo = primero = null;
tamaño = 0;
}
//Funcion que inserta un dato al principio de la lista, recibe como parametro el dato a insertar
public void insertarPrimero(Object valor){
if(tamaño == 0){
primero = new Nodo(valor,null);
ultimo = primero;
tamaño++;
}
else{
Nodo temporal = primero;
primero = new Nodo(valor,temporal);
tamaño++;
}
}
//Funcion que inserta un dato al final de la lista, recibe como parametro el dato a insertar
public void insertarUltimo(Object valor){
if(tamaño == 0){
primero = new Nodo(valor,null);
ultimo = primero;
tamaño++;
}
else{
Nodo temporal = ultimo;
ultimo = new Nodo(valor, null);
temporal.setSiguiente(ultimo);
tamaño++;
}
}
//Funcion que elimina el primer nodo de la lista
public void eliminarPrimero(){
if(tamaño == 0)return;
Nodo temporal = primero;
temporal = primero.getSiguiente();
primero = null;
primero = temporal;
tamaño--;
}
//Funcion que elimmina el ultimo nodo de la lista
public void eliminarUltimo(){
if(tamaño == 0)return;
if(tamaño == 1){
ultimo = primero = null;
tamaño = 0;
return;
}
Nodo temporal = primero;
while(temporal.getSiguiente() != ultimo){
temporal = temporal.getSiguiente();
}
temporal.setSiguiente(null);
ultimo = temporal;
tamaño--;
}
//Funcion que regresa el tamaño de la lista... es decir el numero de elementos que contiene
public int getTamaño(){
return tamaño;
}
//Funcion que devuelve un array con los elementos de la lista
public Object[] getElementos(){
if(tamaño == 0)return new Object[0];
Object[] elementos = new Object[tamaño];
int i = 0;
Nodo temporal = primero;
while(temporal != null){
System.out.print(temporal.getValor().toString()+" ");
elementos[i++] = temporal.getValor();
temporal = temporal.getSiguiente();
}
System.out.println("");
return elementos;
}
public static void main(String[] args) {
ListaEnlazada lista = new ListaEnlazada();
lista.insertarPrimero(1);
}
}
public class Pila {
private ListaEnlazada pila;
public Pila(){
pila = new ListaEnlazada();
}
public void push(Object dato){
pila.insertarPrimero(dato);
}
//Funcion que elimina un elemento de la pila
public Object pop(){
Object Dato = pila.getElementos()[0];
pila.eliminarPrimero();
return Dato;
}
//Funcion que devuelve el tope de la pila
public Object peek(){
return pila.getElementos()[0];
}
//Funcion que devueleve el tamaño de la pila
public int size(){
return pila.getTamaño();
}
//Funcion que devuelve los elementos de la pila
public Object[] getElementos(){
return pila.getElementos();
}
}
public class Cola {
private ListaEnlazada cola;
public Cola(){
cola = new ListaEnlazada();
}
public void encolar(Object dato){
cola.insertarUltimo(dato);
}
public Object desencolar(){
Object dato = cola.getElementos()[0];
cola.eliminarPrimero();
return dato;
}
public Object frente(){
return cola.getElementos()[0];
}
public int size(){
return cola.getTamaño();
}
public Object[] getElementos(){
return cola.getElementos();
}
}
No hay comentarios:
Publicar un comentario