0% encontró este documento útil (0 votos)
89 vistas4 páginas

Lab 07 List As Circular Es

El documento describe las listas circulares simplemente y doblemente enlazadas, incluyendo representaciones gráficas. También presenta la implementación de una clase Nodo genérica y una clase ListaCircular con métodos como insertar al principio, insertar al final, imprimir la lista y contar los elementos. El objetivo es desarrollar métodos adicionales como eliminar por el inicio, eliminar por el final y eliminar toda la lista.

Cargado por

Jennifer Pillaca
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
89 vistas4 páginas

Lab 07 List As Circular Es

El documento describe las listas circulares simplemente y doblemente enlazadas, incluyendo representaciones gráficas. También presenta la implementación de una clase Nodo genérica y una clase ListaCircular con métodos como insertar al principio, insertar al final, imprimir la lista y contar los elementos. El objetivo es desarrollar métodos adicionales como eliminar por el inicio, eliminar por el final y eliminar toda la lista.

Cargado por

Jennifer Pillaca
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Ingenieríía de Sistemas – UNSCH

Estructura de datos IS241


LABORATORIO 07
Listas Circulares

Una lista circular simplemente encadenada la podemos representar gráficamente:

Observemos que el puntero sig del último nodo apunta al primer nodo. En este tipo de
listas si avanzamos raiz no perdemos la referencia al nodo anterior ya que es un círculo.

Una lista circular puede también ser doblemente encadenada:

El puntero ant del primer nodo apunta al último nodo de la lista y el puntero sig del
último nodo de la lista apunta al primero.

Resolveremos algunos métodos para administrar listas genéricas circulares doblemente


encadenadas para analizar la mecánica de enlace de nodos.

Implementación
public class Nodo <Tipo>{
private Tipo info;
private Nodo anterior;
private Nodo siguiente;
public Nodo(Tipo x){
info=x;
anterior =null;
siguiente=null;
}

public Tipo getInfo() {

Ing. Jennifer Rocíío Pillaca De La Cruz Paí gina 1


Semestre 2018-I
Ingenieríía de Sistemas – UNSCH
Estructura de datos IS241
return info;
}

public void setInfo(Tipo info) {


this.info = info;
}

public Nodo getAnterior() {


return anterior;
}

public void setAnterior(Nodo anterior) {


this.anterior = anterior;
}

public Nodo getSiguiente() {


return siguiente;
}

public void setSiguiente(Nodo siguiente) {


this.siguiente = siguiente;
}
}

public class ListaCircular <Tipo> {

private Nodo raiz;

public ListaCircular () {
raiz=null;
}

public void insertarPrimero(Tipo x) {


Nodo nuevo=new Nodo(x);

if (raiz==null) {
nuevo.setSiguiente(nuevo);
nuevo.setAnterior(nuevo);
raiz=nuevo;
} else {
Nodo ultimo=raiz.getAnterior();
nuevo.setSiguiente(raiz);
nuevo.setAnterior(ultimo);
raiz.setAnterior(nuevo);
ultimo.setSiguiente(nuevo);// anterior
raiz=nuevo;
}

Ing. Jennifer Rocíío Pillaca De La Cruz Paí gina 2


Semestre 2018-I
Ingenieríía de Sistemas – UNSCH
Estructura de datos IS241
}

public void insertarUltimo(Tipo x) {


Nodo nuevo=new Nodo(x);

if (raiz==null) {
nuevo.setSiguiente(nuevo);
nuevo.setAnterior(nuevo);
raiz=nuevo;
} else {
Nodo ultimo=raiz.getAnterior();
nuevo.setSiguiente(raiz);
nuevo.setAnterior(ultimo);
raiz.setAnterior(nuevo);
ultimo.setSiguiente(nuevo);//anterior
}
}

public boolean vacia ()


{
if (raiz == null)
return true;
else
return false;
}

public void imprimir ()


{
if (!vacia()) {
Nodo reco=raiz;
do {
System.out.print (reco.getInfo() + "-");
reco = reco.getSiguiente();
} while (reco!=raiz);
System.out.print (reco.getInfo() + "-");
System.out.println();
}
}

public int cantidad ()


{
int cant = 0;
if (!vacia()) {
Nodo reco=raiz;
do {
cant++;
reco = reco.getSiguiente();
} while (reco!=raiz);
}

Ing. Jennifer Rocíío Pillaca De La Cruz Paí gina 3


Semestre 2018-I
Ingenieríía de Sistemas – UNSCH
Estructura de datos IS241
return cant;
}

}
public class Demo {
public static void main(String[] args) {
ListaCircular <Integer> lista=new ListaCircular();
lista.insertarPrimero(8);
lista.insertarPrimero(9);
System.out.println("La lista ");
lista.imprimir();
lista.insertarUltimo(10);
lista.insertarUltimo(12);
System.out.println("La lista ");
lista.imprimir();
lista.insertarPrimero(16);
System.out.println("La lista ");
lista.imprimir();
lista.insertarUltimo(12);
System.out.println("La lista ");
lista.imprimir();
}
}

Desarrollar los métodos de la lista circular simple y doble:


 Eliminar por el inicio
 Eliminar por el final
 Eliminar toda la lista
 Contar los elementos de la lista
 Buscar un elemento en la lista

Ing. Jennifer Rocíío Pillaca De La Cruz Paí gina 4


Semestre 2018-I

También podría gustarte