谁能帮我编写一个list模板?

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:49:15
以下是一个List类模板的定义:
template<class T> class List{
public:
List(); //构造函数
void Add(T&); //在Link表头添加新结点
void Remove(T&); //在Link中删除含有特定值的元素
T* Find(T&); //查找含有特定值的结点
void PrintList(); // 打印输出整个链表
~List();
protected:
struct Node{
Node* pNext;
T* pT;
};
Node *pFirst; //链首结点指针?
};
完成对上述List类模板含有的各成员函数的定义。然后定义一个简单的Student类,并利用编写的List类模板对一个班级的学生进行动态管理。
我是知道STL有这个LIST模板的啊。。。但是老师要我们写个LIST模板的说。。。

写去了,写完再来
++++++++++++++++++++++++++++++++++++++++++++++++++++
在这里有个问题,add,remove由于参数是引用,所以不能用常量作为参数,
若要用常量作为参数,把引用去掉即可
template<class T>
class List{
public:
List(){
pFirst=NULL;
}
//构造函数
void Add(T & t2){
Node *p;
if(pFirst==NULL){
p=new Node;
p->pT=new T;
*(p->pT)=t2;
p->pNext=NULL;
pFirst=p;
}
else{
p=new Node;
p->pNext=pFirst;
p->pT=new T;
*(p->pT)=t2;
pFirst=p;
}
} //在Link表头添加新结点
void Remove(T & t2){
Node *p,*q;
p=pFirst;
if(pFirst==NULL){
cout<<"The List is NULL\n";
return ;
}
else{
if(*(pFirst->pT)==t2){
p=pFirst;
pFirst=pFirst->pNext;
delete p->pT;
delete p;
}
else {
p=pFirst;
while(*(p->pT)!=t2){
q=p;
p=p->pNext;
}
q->pNext=p->pNe