主题:求助,练习使用类模板建立链表,运行结果错误,求高手帮助!
主要练习使用类模板建立链表,
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 ;
}
上述代码编译链接都没有问题,但是运行结果就是不正确,不知道怎么搞的,求高手赐教!
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 ;
}
上述代码编译链接都没有问题,但是运行结果就是不正确,不知道怎么搞的,求高手赐教!