Académique Documents
Professionnel Documents
Culture Documents
char
boolean
byte
short
int
long
float
doubl
4. ESTRUCTURAS DE DATOS
TAD (Tipo de Dato Abstracto)
Los TAD son definidos por el programador
INGENIERIA DE SISTEMAS
5. LISTAS
La lista es un TAD, que consta de una secuencia de elementos llamados nodos.
Nodo
-
Datos (Informacin)
Enlace o apuntador (Apunta al siguiente nodo)
Info
Enlace
Nodos enlazados
Los nodos forman una secuencia desde el primer elemento al ltimo elemento. El primer nodo se enlaza al
segundo, ste se enlaza al tercero y as sucesivamente hasta llegar al ltimo nodo, que debe ser representado
de forma diferente para especificar que este nodo no se enlaza a ningn otro.
6. PILA
Una pila es TAD de tipo de lista LIFO (el ltimo en entrar es el primero en salir), tal como una pila de platos.
Operaciones sobre la pila:
-
Meter (push)
Sacar (pop)
Es vaca
7. COLA
Una cola es TAD de tipo de lista FIFO (el primero en entrar es el primero en salir), tal como la fila de un
banco.
Operaciones sobre la cola:
-
Insertar
Remover
Es vacia
INGENIERIA DE SISTEMAS
Una lista de enlace simple es una lista enlazada de nodos, donde cada nodo tiene un nico campo de enlace.
Una variable de referencia contiene una referencia al primer nodo, cada nodo (excepto el ltimo) enlaza con
el nodo siguiente, y el enlace del ltimo nodo contiene null para indicar el final de la lista.
En java para realizar listas enlazadas se utilizan clases autoreferenciadas.
Una clase autoreferenciada es una clase con al menos un campo cuyo tipo de referencia es el nombre de la
clase.
Las operaciones bsicas sobre una lista simple son:
-
Insertar nodo
Eliminar nodo
Buscar nodo
Mostrar lista
Eliminar lista
3. NODO
JAVA
Nodo
info
enlace
int info
Nodo enlace
class Nodo {
int info;
Nodo enlace;
}
INGENIERIA DE SISTEMAS
cab
4
Lista
Nodo cab
NULL
JAVA
class Lista {
insertarNodo
eliminarNodo
buscarNodo
mostrarLista
eliminarLista
Para probar la lista necesitamos una clase de prueba donde tenga la funcin main, como se muestra a
continuacin
class Prueba {
public static void main(String[] args) {
Lista A=new Lista();
A.InsertarNodo(2);
A.InsertarNodo(3);
A.InsertarNodo(4);
A.mostrarLista();
}
}
En el IDE Eclipse debera crear 3 clases como se muestra a continuacin
INGENIERIA DE SISTEMAS
Ejercicios.
Insercin al ltimo
El mtodo de insercin del ejemplo es la insercin por delante (al principio), ahora realizaremos el mtodo de
insercin por detrs (al ltimo).
void insertarUltimo(int a)
{
if(cab==null)
{
cab=new Nodo();
cab.info=a;
cab.enlace=null;
}
else
{
Nodo aux=cab;
Nodo temp=new Nodo();
temp.info=a;
temp.enlace=null;
while(aux.enlace!=null)
{
aux=aux.enlace;
}
aux.enlace=temp;
}
}
INGENIERIA DE SISTEMAS
INGENIERIA DE SISTEMAS
import java.util.*;
public class Prueba {
public static void main(String[] args) {
Scanner en=new Scanner(System.in);
Lista l=new Lista();
System.out.print("inserte cantidad de datos: ");
int cant=en.nextInt();
int num;
for(int i=0;i<cant;i++)
{
System.out.print("inserte un dato: ");
num=en.nextInt();
l.insertarOrdenado(num);
}
l.mostrar();
}
}
Podemos modificar la clase Prueba para que los nmeros insertados en la lista sean generados aleatoriamente
Estos nmeros deben estar entre 10 y 20, la cantidad de nmeros ser introducido por teclado.
import java.util.*;
public class Prueba {
public static void main(String[] args) {
Scanner en=new Scanner(System.in);
Lista l=new Lista();
System.out.print("inserte cantidad de datos: ");
int cant=en.nextInt();
int num;
for(int i=0;i<cant;i++)
{
INGENIERIA DE SISTEMAS
Funcin que muestre los datos primos de la lista (funcin para la clase Lista)
void mostrarPrimos()
boolean primo(int a){
int c=0;
for(int i=1;i<=a;i++)
if(a%i==0)
c++;
if(c<=2)
return true;
return false;
}
void mostrarPrimos(){
Nodo aux=cab;
while(aux!=null){
if(primo(aux.info))
System.out.print(aux.info+" ");
aux=aux.enlace;
}
}
Funcin que recibe como parmetro una lista (un nodo) a la cual se enlazar la lista.
void enlazar(Nodo A)
{
Nodo temp=cab;
while(temp.enlace!=null)
temp=temp.enlace;
temp.enlace=A;
}