sábado, 6 de febrero de 2021
Estructuras de datos lineales.
Estructuras de datos lineales:
Se llaman tipos de datos lineales los que estan formados por secuencias de datos de un mismo tipo.
Se distinguen tres tipos de linealidades o secuencias: pilas, colas y listas con puntos de interés.
Estas estructuras de datos lineales se pueden implementar con arrays o con elementos enlazados, que ahora explicaremos.
Con arrays: los elementos de la secuencia se disponen sucesivamente en los distintos componentes de un array lo suficientemente grande para que quepan e incluso sobren componentes, de modo que si el tamaño del array es m, en numero de elementos de la secuencia introducidos sean n, de modo que n <= m;
Con elementos enlazados -secuencias enlazadas-.
Vamos a estudiar como se implementa una secuencia enlazada:
Un elemento u objeto de una secuencia enlazada es un objeto muy abstracto, consta de dos variables una que puede ser valores de cualquier tipo de dato, siempre del mismo tipo, y la siguiente variable que forma parte del Nodo, que así se llama el elemento de la secuencia, es un dato que contiene la referencia o direccion de memoria del heap, del nodo previamente creado.
NODO:la clase Nodo.
Es la estructura mínima, elemental, un solo objeto de una secuencia.
Consta de un dato del tipo que sea (int, double, String, twit, ... ) eso sí, todos serán del mismo tipo. Y de otro dato donde se guarda la referencia que tiene en el heap el nodo anterior.
Sea la clase NodoInt -nodos con datos de enteros. Sus atributos estan formado, como hemos dicho, por dos valores, uno un dato entero y otro por un dato que es la referencia de la memoria del nodo anterior. (Al implementar la clase, esta primera refenrcia no existirá, pues el primer nodo no contendrá, en su doto referencia correspondiente, el valor de ningun otro nodo, por ser este el primero. Pero a partir del segundo, en este atributo, se guardarán las referencias de los anteriores; veamos:
public class NodoInt{
private int dato;
private NodoInt sec;
public NodoInt(int d){
this.dato = d;
this.sec = null;
}
public NodoInt(int d,NodoInt sec){
this.dato = d;
this.sec = sec;
}
public static void main(String[] arg){
NodoInt sec = null;
sec = new NodoInt(10);
sec = new NodoInt(20,sec);
sec = new NodoInt(30,sec);
sec = new NodoInt(40,sec);
sec = new NodoInt(50,sec);
sec = new NodoInt(60,sec);
sec = new NodoInt(70,sec);
//imprimir(sec);
//saturar(60,sec);
//buscar(30,sec);
//buscar(sec,4);//Este método, que tiene el mismo nombre que el anterior, al cambiar los parametros formales,
//está implementado de forma distinta: obtiene el valor de d en un nodo iésimo.
//cambiar(30,10000,sec);
insercion(sec,25);
}
//podemos ir implementando los métodos de recorridos, búsquedas, inserción, eliminación, ... que consideremos oportunos para manipular la secuencia enlazada.
public static void imprimir(NodoInt sec){
NodoInt aux = sec;
while(aux!=null){
System.out.println(aux.dato);
aux=aux.sec;
}
}
public static void saturar(int n,NodoInt sec){
NodoInt aux = sec;
while(aux!=null){
if(aux.dato>n)aux.dato=n;
System.out.println(aux.dato);
aux = aux.sec;
}
}
public static void buscar(int n, NodoInt sec){
NodoInt aux = sec;
while(aux!=null&&aux.dato!=n){
aux = aux.sec;
}
System.out.println(aux.dato);
}
public static int buscar(NodoInt sec,int i){
NodoInt aux = sec; int k =0;
while(aux!=null&&k=d:
while (aux!=null &&aux.dato
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario