Sunteți pe pagina 1din 8

INGENIERIA DE SISTEMAS

ESTRUCTURAS DE DATOS (Listas simples)

INTRODUCCIN A LAS ESTRUCTURAS DE DATOS 1. INTRODUCCIN Las computadoras fueron diseadas o ideadas como una herramienta mediante la cual podemos realizar operaciones de clculo complicadas en un lapso de mnimo tiempo. Pero, la mayora de las aplicaciones de este fantstico invento del hombre, son las de almacenamiento y acceso de grandes cantidades de informacin. La informacin que se procesa en la computadora es un conjunto de datos, que pueden ser simples o estructurados. Los datos simples son aquellos que ocupan slo una localidad de memoria, mientras que los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador nico. Debido a que por lo general tenemos que tratar con conjuntos de datos y no con datos simples (enteros, reales, booleanos, etc.) que por s solos no nos dicen nada, ni nos sirven de mucho, es necesario tratar con estructuras de datos adecuadas a cada necesidad. 2. CONCEPTO Una estructura de datos es una coleccin de datos organizados de un modo particular, las estructuras de datos pueden ser de dos tipos: estructuras de datos estticas y estructuras de datos dinmicas. Las estructuras de datos estticas son aquellas en las que el espacio en memoria se define en tiempo de compilacin y no pueden ser modificados durante la ejecucin del programa, corresponden a este tipo los arrays (vectores y matrices). Las estructuras de datos dinmicas son aquellas en las que el espacio ocupado en memoria puede ser modificada en tiempo de ejecucin, corresponden a este tipo: las listas, rboles y grafos.

3. TIPOS DE DATOS PRIMITIVOS (SIMPLES) Son aquellos que ya estn definidos por los lenguajes de programacin, donde solo utilizan una localidad de memoria, entre ellos se encuentran: char boolean byte short int long float doubl

4. ESTRUCTURAS DE DATOS TAD (Tipo de Dato Abstracto) Los TAD son definidos por el programador

TAD = datos + Operaciones (funciones)

INGENIERIA DE SISTEMAS 5. LISTAS

ESTRUCTURAS DE DATOS (Listas simples)

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 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. Enlace

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: 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 Meter (push) Sacar (pop) Es vaca

INGENIERIA DE SISTEMAS

ESTRUCTURAS DE DATOS (Listas simples)

LISTAS ENLAZADAS SIMPLES 1. INTRODUCCIN Las listas enlazadas son una secuencia de nodos que se encuentran enlazados uno con el siguiente mediante un enlace. Cada elemento (nodo) de una lista enlazada debe tener dos campos: un campo (info) que contiene el valor de ese elemento y un campo (enlace) que indica la posicin del siguiente elemento. Aunque se pueden crear muchos tipos de listas enlazadas, las tres variantes ms populares son la lista de enlace simple, la lista doblemente enlazada y la lista enlazada circular. 2. LISTA DE ENLACE SIMPLE.

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 4. LISTA ENLAZADA SIMPLE

ESTRUCTURAS DE DATOS (Listas simples)

cab
4 7 JAVA class Lista { 8 0 NULL

Lista Nodo cab insertarNodo eliminarNodo buscarNodo mostrarLista eliminarLista

Nodo cab; //declaracin del nodo


void InsertarNodo(int n) //insercin por delante { if(cab==null) //entra la primera vez { cab=new Nodo(); //crea el nodo cab cab.info=n; cab.enlace=null; //su primer enlace apunta a null } else { Nodo temp=new Nodo(); //nodo temporal temp.info=n; temp.enlace=cab; cab=temp; } } void mostrarLista() { Nodo temp=cab; while(temp!=null) //recorre hasta llegar a null { System.out.print(temp.info); temp=temp.enlace; } } }

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

ESTRUCTURAS DE DATOS (Listas simples)

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

ESTRUCTURAS DE DATOS (Listas simples)

MS EJERCICIOS CON LISTAS ENLAZADAS SIMPLES Programa que permite insertar N datos en una lista enlazada (los datos son insertados ordenadamente mediante una funcin insertarOrdenado()) class Nodo { int info; Nodo enlace; public Nodo(int a){ //Constructor que recibe como parmetro un nmero info=a; } }

public class Lista { Nodo cab; void mostrar() { Nodo aux=cab; while(aux!=null){ System.out.print(aux.info+" "); aux=aux.enlace; } } void insertarOrdenado(int a){ if(cab==null){ cab=new Nodo(a); cab.enlace=null; } else{ Nodo temp=new Nodo(a); if(a<cab.info){ temp.enlace=cab; cab=temp; } else{ Nodo aux=cab; while(aux.enlace!=null && a>aux.enlace.info) aux=aux.enlace; temp.enlace=aux.enlace; aux.enlace=temp; } } } }

INGENIERIA DE SISTEMAS

ESTRUCTURAS DE DATOS (Listas simples)

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++) {

num=10+(int)(Math.random()*11); //numero aleatorio


l.insertarOrdenado(num); } l.mostrar(); } } Funcin que devuelve la suma de los datos de la lista int sumarDatos() int sumarDatos(){ int s=0; Nodo temp=cab; while(temp!=null){ s=s+temp.info; temp=temp.enlace; } return s; }

INGENIERIA DE SISTEMAS

ESTRUCTURAS DE DATOS (Listas simples)

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; }

S-ar putea să vă placă și