Sunteți pe pagina 1din 10

UNIVERSIDAD LAICA ELOY ALFARO DE MANAB

FACULTAD DE CIENCIAS INFORMTICAS

MATERIA:
ESTRUCTURA DE DATOS
CURSO:
3er Semestre A
PROFESOR:
Ing. Robert Moreira Centeno
TEMA:
Listas simplemente enlazadas circulares
INTEGRANTES:
CARREO MACIAS GENESIS MONSERRATE
CASTRO VARA BRANGY GABRIEL
DELGADO HOLGUIN KEVIN JOEL
DELGADO INTRIAGO WILLIAMS GUILLERMO
PINCAY VIVAR EDWIN BRAYAN
ZAMORA GILER STEVEN EMILIO
Tabla de contenido
1 INTRODUCION ............................................................................................... 3
2 CONTENIDO ................................................................................................... 4
2.1 LISTAS SIMPLEMENTE ENLAZADAS CIRCULARES ...................................4
2.2 ESQUEMA DE LAS LISTA CIRCULAR SIMPLEMENTE ENLAZADA ...........4
2.3 CARACTERISTICA ............................................................................................4
2.4 OPERACIONES BSICAS ................................................................................4
2.5 CODIGO MEDIANTE CONSOLA ......................................................................5
2.5.1 INGRESAR .......................................................................................................... 5
2.5.2 BUSCAR .............................................................................................................. 6
2.5.3 MODIFICAR ........................................................................................................ 7
2.5.4 IMPRIMIR ............................................................................................................ 7
2.5.5 ELIMINAR............................................................................................................ 8
3 CONCLUSINES ............................................................................................ 9
4 BIBLIOGRAFA ............................................................................................. 10

2
1 INTRODUCION

El presente proyecto acadmico se dar a conocer el estudio de las estructuras


de datos dinmicas, cuyo tamao en memoria permanece inalterable durante la
ejecucin del programa, las estructuras de datos dinmicas crecen y se contraen
a medida que se ejecuta el programa.

Comprender la forma en cmo se trabaja con nodos en listas simplemente


enlazadas circulares. Para lo cual se desarrollan mtodos para insertar, buscar
y borrar elementos en listas enlazadas circular. De igual modo, se muestra el tipo
abstracto de datos (TAD) que representa las listas enlazadas.

3
2 CONTENIDO

2.1 LISTAS SIMPLEMENTE ENLAZADAS CIRCULARES

Las listas circulares son estructuras de datos en la que el ltimo nodo apunta al
primero lo cual la convierte en una lista sin fin, cada nodo siempre tiene uno
anterior y uno siguiente, su estructura es muy similar a las listas simples por lo
cual comparten caractersticas tanto en su implementacin como en su manejo,
aunque requiere un mayor entendimiento del manejo de los punteros.

2.2 ESQUEMA DE LAS LISTA CIRCULAR SIMPLEMENTE


ENLAZADA

2.3 CARACTERSTICA

No existe ningn nodo que apunte a null.


La lista no tiene fin ya que al llegar al ltimo nodo empieza de nuevo la
lista.
Se accede a la lista mediante el primer nodo o tambin llamado inicio de
la lista.
Si no se tiene cuidado al manejar la lista circular se pueden crear bucles
infinitos.
No tiene acceso aleatorio es decir para acceder a un valor se debe
recorrer toda la lista.

2.4 OPERACIONES BSICAS

agregar (valor): agrega el valor al final de la lista.

4
remover (referencia): elimina el nodo con el valor que coincida con la
referencia.
editar (referencia): actualiza el valor de nodo con el valor que coincida
con la referencia.
esVacia (): retorna true si la lista est vaca, false en caso contrario.
buscar (valor): retorna la true si el elemento existe en la lista, false caso
contrario.
eliminar(): elimina la lista
listar (): imprime en pantalla los elementos de la lista.

2.5 CODIGO MEDIANTE CONSOLA

2.5.1 INGRESAR

public void insertarNodo(int dato) {


// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.dato = dato;
// Consulta si la lista esta vaca.
if (primero == null) {
// Inicializa la lista agregando como inicio al nuevo nodo.
primero = nuevo;
// De igual forma el ultimo nodo ser el nuevo.
ultimo = primero;
// Y el puntero del ultimo debe apuntar al primero.
primero.siguiente = ultimo;
// Caso contrario el nodo se agrega al final de la lista.
} else {
// Apuntamos con el ultimo nodo de la lista al nuevo.
ultimo.siguiente = nuevo;
// Apuntamos con el nuevo nodo al inicio de la lista.
nuevo.siguiente = primero;
// Como ahora como el nuevo nodo es el ultimo se actualiza
// la variable ultimo.
ultimo = nuevo;
}
}

5
2.5.2 BUSCAR

public void buscarNodo(int dato) {


// Crea una copia de la lista.
actual = primero;
// Bandera para indicar si el valor existe.
boolean encontrar = false;
// Recorre la lista hasta encontrar el elemento o hasta
// llegar al primer nodo nuevamente.
do {
// Consulta si el valor del nodo es igual al de referencia.
if (actual.dato == dato) {
// Cambia el valor de la bandera.
encontrar = true;
}
// Avansa al siguiente. nodo.
actual = actual.siguiente;
} while (actual != primero);
//ponemos en una condicion a la bandera
// y si es TRUE si exite en la lista
//caso contrario no esta
if (encontrar == true) {
System.out.println("EL ELEMENTO: " + dato + " SI SE ENCONTRA EN LA LISTA");
} else {
System.out.println("EL ELEMENTO: " + dato + " NO SE ENCONTRA EN LA LISTA");
}
}

6
2.5.3 MODIFICAR

public void modificarNodo(int dato) {


// Crea ua copia de la lista.
actual = primero;
// Recorre la lista hasta llegar al nodo de referencia.
do {
// Consulta si el valor existe en la lista.
if (actual.dato == dato) {
System.out.println("INGRESE EL NUEVO DATO PARA EL NODO");
// Actualizamos el valor del nodo
actual.dato = teclado.nextInt();
}
// Avansa al siguiente. nodo.
actual = actual.siguiente;
} while (actual != primero);
}

2.5.4 IMPRIMIR

public void listar() {


// Crea una copia de la lista.
actual = primero;
// Verifica si la lista contiene elementos.
if (actual != null) {
// Recorre la lista hasta llegar nuevamente al incio de la lista.
do {
// Imprime en pantalla el valor del nodo.
System.out.print(".[ " + actual.dato + " ]" + " -> ");
// Avanza al siguiente nodo.
actual = actual.siguiente;
} while (actual != primero);
} else {
System.out.println("LA LISTA ESTA VACIA");
}
}

7
2.5.5 ELIMINAR

public void eliminarNodo(int dato) {


Nodo actual = new Nodo();
Nodo anterior = new Nodo();
actual = primero;
anterior = ultimo;
boolean encontrar = false;
if (actual != null) {
do {
if (actual.dato == dato) {
encontrar = true;
if (primero == ultimo) {
primero = null;
ultimo = null;
} else if (actual == primero) {
primero = primero.siguiente;
ultimo.siguiente = primero;
} else if (actual == ultimo) {
anterior.siguiente = ultimo.siguiente;
ultimo = anterior;
} else {
anterior.siguiente = actual.siguiente;
}
}
anterior = actual;
actual = actual.siguiente;
} while (actual != primero);
if (encontrar == false) {
System.out.println("DATO NO ENCONTRADO");
}

} else {
System.out.println("No hay Elementos en la lista");
}
}

8
3 CONCLUSINES

Las listas simplemente enlazadas circulares, son posiblemente las estructuras


de datos ms fciles, rpidas y sencillas de estudiar, aprender y entender.
La resolucin de una funcin relacionada con listas simplemente enlazadas, es
fcil y rpida, en especial porque no se requieren demasiadas lneas de cdigo,
por ende, la solucin es inmediata.
Las listas simplemente enlazadas circulares, as como tambin otro tipo de
estructuras similares, son tiles a la hora de trabajar problemas como PILAS y
COLAS, ya que se maneja la misma lgica de agregar, borrar o buscar
elementos. Algunos ejemplos pueden ser la fila para el cine o un banco, en
donde tal vez se necesite de estas tres funciones principales de listas
simplemente enlazadas circulares, para registrar quien es el primero de la lista,
el ltimo, el tiempo que lleva en espera, etc.

9
4 BIBLIOGRAFA
Acosta, B. (12 de septiembre de 2016). Codigo Libre. Obtenido de Lista Simple Circulares:
http://codigolibre.weebly.com/blog/listas-circulares-simples-en-java

Vergara, A. (12 de marzo de 2015). YouTube. Obtenido de Tutoriales de Programacin


Explicada: https://www.youtube.com/watch?v=J1T5VJ93SAk

Hernandez, J. D. (10 de diciembre de 2013). YouTube. Obtenido de Jorge David Medina


Hernandez: https://www.youtube.com/watch?v=ubH3U5xYesU

10

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