Listas doblemente enlazadas en Arduino

Algunas veces nos encontramos con la necesidad de tener la información que leemos de una base de datos o que nos entrega cierto dispositivo en forma de lista. He visto algunas implementaciones de otros usuarios de Arduino y la verdad, a mi no me han llegado a convencer del todo, por lo que he desarrollado mi propia clase para usar listas doblemente enlazadas  (listas que se pueden recorrer en uno u otro sentido).

Aquí dejo un resumen de las características:

NewList.h — Versión 1.0

Librería para usar listas doblemente enlazadas en Arduino (1.0.5 o superior).
Creada por: José Alfonso Suárez Moreno (joseasuarez@gmail.com).
Fecha: 21.ABR.2014

Uso:

NewList<tipo> lista;

<tipo> es el tipo de dato a usar en la lista. Desde un tipo primitivo como int, char, long… hasta un objetoo una estructura. Los símbolos <> son necesarios.

Métodos:

  • ~NewList()> Destructor.
  • add() -> Añade un nuevo elemento al final de la lista.
  • insert() -> Inserta un nuevo elemento delante del actual.
  • goFirst() -> Se posiciona al principio de la lista.
  • goLast() -> Se posiciona al final de la lista.
  • goTo(int n) -> Se posiciona en la posición n. La primera posición es 0.Si el valor es mayor que el número de elementos-1 se posiciona en el último.
  • search(tipo v) -> Busca el valor v en la lista. Debe ser del mismo tipo que el declarado al crear el objeto. Devuelve el valor. Si no lo encuentra se posiciona en el último elemento.
  • goPrevious() -> Se posiciona en el elemento anterior al actual.
  • goNext() -> Se posiciona en el elemento siguiente al actual.
  • isFirst() -> Indica si está posicionado en el primer elemento. (true/false).
  • isLast() -> Indica si está posicionado en el último elemento. (true/false).
  • isEmpty() -> Indica si la lista está vacía. (true/false).
  • getCurrent() -> Devuelve el elemento actual.
  • get(int n) -> Devuelve el elemento n. La primera posición es 0. Si el valor es mayor que el número de elementos-1 se posiciona en el último.
  • hasPrevious() -> Indica si hay un elemento dealante del actual. (true/false).
  • hasNext() -> Indica si hay un elemento detrás del actual.

TO-DO:

  • erase(int n) -> Eliminar el elemento n.
  • eraseCurrent() -> Eliminar el elemento actual.
  • eraseValue(tipo v) -> Eliminar el elemento que tenga el valor v (del mismo tipo que el especificado al crear la lista).

 

Enlace de descarga: listas doblemente enlazadas en Arduino.

Más de un año con Linux

Hace más de un año que tomé la decisión de pasar de Windows para usar Linux; una decisión que ha conseguido que mejore notablemente el rendimiento de mi tiempo delante del ordenador al evitar constantes problemas producidos por la inestabilidad innata del sistema operativo de Microsoft.

El paso, por supuesto, ha requerido que cambie también otros aspectos de mi día a día, como el desarrollo de aplicaciones. Lamentablemente, una gran herramienta como Xailer, no permite realizar aplicaciones multi-plataforma, por lo que si o si he tenido que sacrificar mi entorno de desarrollo preferido para trabajar con Java.

Sigo manteniendo las aplicaciones realizadas para Windows, pero poco a poco las iré trasladando a Java, buscando, como he dicho antes, la posibilidad de poder ejecutarlas en Linux, Mac y Windows.

Estoy muy satisfecho con el cambio y animo desde aquí a todos los que estáis indecisos que no lo dudéis: Linux abre una puerta al futuro; quizá no sea tan «vistoso», pero, de verdad, vale la pena.