Listas doblemente enlazadas con Ardunio

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:

#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: Listas doblemente enlazadas en Arduino | Blog de Jose Alfonso Suárez

muy bueno. Pero cuanta memoria consume?

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.

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