Pages: [1]   Go Down
Author Topic: Listas doblemente enlazadas con Ardunio  (Read 244 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Les dejo un enlace a mi blog donde he publicado una librería para Ardunio 1.0.5 o superior que sirve para manejar listas doblemente enlazadas.

En ejemplo:
Code:
#include <NewList.h>

void setup() {

Serial.begin(115600);
Serial.println("Prueba con NewList"); // NewList Test

NewList<int> listaEnteros;
Serial.println("Objero creado"); //Created object

// Añadiendo al final de la lista.
listaEnteros.add(1); //Adding to end of list.
listaEnteros.add(2);
listaEnteros.add(50);
listaEnteros.add(32);

Serial.println("");

Serial.println("Desde el primero: "); //From first
listaEnteros.goFirst();
Serial.println(listaEnteros.getCurrent());
while(listaEnteros.hasNext()){
listaEnteros.goNext();
Serial.println(listaEnteros.getCurrent());
}

Serial.println("");

Serial.print("El de la segunda posicion: "); //Second possition
  Serial.println(listaEnteros.get(2));

Serial.println("");

Serial.print("El último: "); // Last
listaEnteros.goLast();
Serial.println(listaEnteros.getCurrent());

Serial.println("");

Serial.print("El primero: "); //First possition (start from 0)
listaEnteros.goFirst();
Serial.println(listaEnteros.getCurrent());

Serial.println("");

Serial.println("Desde el ultimo: ");//From last
listaEnteros.goLast();
Serial.println(listaEnteros.getCurrent());
while(listaEnteros.hasPrevious()){
listaEnteros.goPrevious();
Serial.println(listaEnteros.getCurrent());
}

Serial.println("");

// La última posición es la 3, como no existe el 4º se posiciona en el último.
// The last possition is 3, than there are'n the 4, stay in last element.
Serial.print("El de la cuarta posicion: ");
Serial.println(listaEnteros.get(4));

Serial.println("Se posiciona en el 2º elemento. (el nº 50)");
listaEnteros.goTo(2);
Serial.println("Insertar un 43 delante del 2º elemento.");
listaEnteros.insert(43);

Serial.println("Recorrer la lista para comprobar que el 43 está delante del 50.");
Serial.println("Desde el primero: "); //From first
listaEnteros.goFirst();
Serial.println(listaEnteros.getCurrent());
while(listaEnteros.hasNext()){
listaEnteros.goNext();
Serial.println(listaEnteros.getCurrent());
}

Serial.println("");

Serial.println("Buscar el elemento de valor 50");
listaEnteros.search(50);
Serial.print("Lo encontré: ");
Serial.println(listaEnteros.getCurrent());

// Destructor.
listaEnteros.~NewList();

Serial.println("");
Serial.println("Objeto destruido");

listaEnteros.goFirst();
Serial.println(listaEnteros.getCurrent());

}

void loop() {

}

Enlace: http://jalfonsosuarez.wordpress.com/2014/04/21/listas-doblemente-enlazadas-en-arduino/
« Last Edit: April 21, 2014, 03:07:52 am by jalfonsosuarez » Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 696
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

muy bueno. Pero cuanta memoria consume?
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 1
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La librería en sí misma no consume mucho. El consumo de memoria variará en función del tamaño del objeto que almacenes en la lista y de la cantidad de objetos que haya dentro de ella.

Saludos.
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 696
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La verdad que es muy util pra hacer busquedas, hace tiempo pensaba si se podia hacer un indice para busquedas rapidas por ejemplo en una memoria eprom para buscar codigos de autorización.
Pero la recursividad aqui es muy limitada
Logged

El que pregunta aprende, el que responde aprende a responder.

Pages: [1]   Go Up
Jump to: