non credo sia determinate relativamente all'errore il codice di nodo.h, comunque lo posto subito.

nodo.h
codice:
#ifndef _nodo_h
#define _nodo_h

#include <iostream>
#include <stdlib.h>

using namespace std;

template<class T>
class nodo
{
   public:
      nodo();
      void setprec(nodo *);
      void setelem(T);
      void setsuc(nodo *);
      nodo *getprec();
      T getelem();
      nodo *getsuc();
   private:
      nodo *precedente;
      T elemento;
      nodo *successivo;
};

#endif

template<class T>
nodo<T>::nodo()
{
   precedente = NULL;
   elemento = 0;
   successivo = NULL;
}

template<class T>
void nodo<T>::setprec(nodo *prec)
{
   precedente = prec;
}

template<class T>
void nodo<T>::setelem(T elem)
{
   elemento = elem;
}

template<class T>
void nodo<T>::setsuc(nodo *succ)
{
   successivo = succ;
}

template<class T>
nodo<T>::nodo<T> *nodo<T>::getprec()
{
   return(precedente);
}

template<class T>
T nodo<T>::getelem()
{
   return(elemento);
}

template<class T>
nodo<T>::nodo<T> *nodo<T>::getsuc()
{
   return(successivo);
}