Por si te vale de algo aqui tienes las fuentes de ArrayList, a ver si puedes, analizando sus características, lograr emular su funcionamiento.
http://www.docjar.com/html/api/java/...List.java.html
Clase padre abstracta
http://www.docjar.com/html/api/java/...List.java.html
E interfaz
http://www.docjar.com/html/api/java/util/List.java.html
De todos modos la única forma que veo así a botepronto para tener algo equivalente al ArrayList sin utilizar arrays, es que además del objeto que vayas a contener y del nodo tengas un nuevo objeto de la clase que emula el ArrayList.
Así cuando inicialices un objeto de la clase contenedora debes definir
int nodo, objeto tuObjeto // parámetros del constructor
{
this nodo = nodo;
this.objeto = objeto;
if(objeto!=null) {
TuClase newList = new TuClase(nodo+1,null) // --> Esto te sirve para añadir elementos
}
}
Cuando el objeto es null debes obviar el último valor del nodo (como si no existiese)
y para añadir un nuevo objeto al arrayList se debe obtener el ultimo nodo, setear el objeto, y de nuevo crear un objeto de TuCLase con nodo+1 y null de parámetros.
Aún queda muchísimo por pulir sobre lo que te he comentado, sólo es una idea y no está pulida, así que te toca mirar si es viable.
Suerte