刚才没有发好,重发,关于钱能C++第二版的一道例题,怪了.大家有时间的话来帮帮忙(加分!)解决方案

刚才没有发好,重发,关于钱能C++第二版的一道例题,怪了....大家有时间的话来帮帮忙(加分!!!)
小弟在看到钱能第二版C++的模板这一章时,看了书上的讲解,觉得讲的很生动,让我很容易就理解模板的概念和使用,书上也提供了完整的例子作为讲解,但是当我把书上的例子亲自动手写在电脑上运行时,却出现了意想不到结果...一堆错误消息,是编译器的问题还是概念的问题..我糊涂了...望大家有时间来试着编译一下这个例子,若遇到和我一样的问题,请帮我想想怎么解决,谢谢拉,我能想的都想了....,编译器我用的是Devcpp,后来又用VC++6.0,问题依然如故...程序例如下:    
 
 
#include     <iostream>    
using     namespace     std;    
template     <typename     T>    
struct     Node    
{    
                          Node(T&     d):c(d),next(0),pref(0){}    
                          T     c;    
                          Node     *next,*pref;    
};    
template     <typename     T>    
class     List    
{    
  Node <T>     *first,*last;    
  public:    
                              List();    
                              void     add(T&     c);    
                              void     remove(T&     c);    
                              Node <T> *     find(T&     c);    
                              void     print();    
                              ~List();                        
};    
template     <typename     T>    
List <T> ::List():first(0),last(0){}    
template     <typename     T>    
void     List <T> ::add(T&     n)    
{    
  Node <T> *     p=new     Node <T> (n);    
  p-> next=first;    
  first=p;    
  (last?p-> next-> pref:last)=p     ;                    
}    
template     <typename     T>    
void     List <T> ::remove(T&     n)    
{    
      if(!(Node <T> *     p=find(n)))return;    
      (p-> next?p-> next-> pref:last)=p-> pref;    
      (p-> pref?p-> pref-> next:first)=p-> next;    
      delete     p;                        
}    
template     <typename     T>    
Node <T> *     List <T> ::find(T&     n)