diff --git a/src/sphere/List.h b/src/sphere/List.h index ab4566b2200ee846641b613dd9db72b6e5485f51..f344328c3a91e823de531f7fde2beca48724bb04 100644 --- a/src/sphere/List.h +++ b/src/sphere/List.h @@ -41,19 +41,14 @@ template<class T> class List { * * b = List<int>(); */ - List(int size = 1) { - this->size = size; - element* p_prev = NULL; - T value = (T)0; - current = new element; - current->value = value; - current->p_prev = p_prev; - p_prev = current; - first = current; + List(int length = 1) { + size = length; + first = new element; + first->p_prev = NULL; + element *current = first; + element *p_prev = first; for (int i = 1; i < size; i++) { - T value; current = new element; - current->value = value; current->p_prev = p_prev; p_prev = current; } @@ -107,6 +102,10 @@ template<class T> class List { return current->value; } + int length() { + return size; + } + /*! \fn set(int, T) * \brief Set an element by index and value. * @@ -141,8 +140,8 @@ template<class T> class List { T* to_array() { T *result = new T[size]; current = last; - for (int i = size - 1; i > 0; i--) { - result[i] = current->value; + for (int i = size; i > 0; i--) { + result[i - 1] = current->value; current = current->p_prev; } return result;