主要练习使用类模板建立链表,
VC6.0编译没有错误,但是运行结果不对,不知道为什么,望高手指点,不胜感激!
代码如下:
#include<iostream.h>
template <class T>
class list
{
    public:
    list();//初始化
    ~list();//析构
    void add(T & adata);//添加数据项
    void remove(T &bdata);//删除数据项
    T * find(T &cdata);//查找数据项
    void display();//显示
    protected:
    struct node//定义节点
    {
        node * next;
        T *data;
    };
    node *head;
};
template <class T>
list<T>::list()
{
    head =0;
    return;
}
template <class T>
list<T>::~list()
{
    node * p = head;
    while(p)
    {
        head = head->next;
        delete p->data;
        delete p;
        p=head;
    }
    return;
}
template <class T>
void list<T>::add(T & adata)
{
    node * p=new node;
    p->data = & adata;
    p->next = head ;
    head = p;
    return ;
}
template <class T>
void remove(T &bdata)
{
    node * p = new node;
    if(*((p=head)->data)==bdata)
    head = head->next;
    delete p->data;
    delete p;
    return;
    for(p=head;p;p=p->next)
    {
        if(*(p->next->data)==bdata)
        break;
    }
    p->next=p->next->next;
    return;
}
template <class T>
T *list<T>::find(T &cdata)
{
    node * p = new node;
    for(p=head;p;p=p->next)
    {
        if(*(p->next->data)==cdata)
        break;
    }
    return p->data;
}
template <class T>
void list<T>::display()
{
    node *p=new node;
    p = head;
    while(p)
    {
        cout<<*(p->data)<<" ";
        p=p->next;
    }
    return ;
}

int main()
{
    double doub;
    list<int> INt;
    list<double> FLOat;
    for(int i=0;i<5;i++)
        INt.add(i);
    for(i=0;i<6;i++)
    {
        doub = 0.23*i;
        FLOat.add(doub);
    }
    INt.display();
    cout<<endl;
    FLOat.display();
    cout<<endl;
    return 0 ;
}

上述代码编译链接都没有问题,但是运行结果就是不正确,不知道怎么搞的,求高手赐教!