类模板问题
请各位高手帮忙看一下下面的程序,对单链表的操作,用类模板总是出问题
请大家帮我改正一下,谢谢!!
#include <iostream.h>
template <class ELEM>
struct ListNode
{
ELEM data;
ListNode * link;
};
template <class ELEM>
class List
{
private:
ListNode * head;
ListNode * last;
public:
List(int n); //创建长度为n的单链表
ListNode * Trace(int i); //返回第i个节点的指针
ELEM getValue(int i); //取得地i个节点的数据值
void insertValue(int i,ELEM value); //在第i个节点位置插入数据为value的节点
ELEM delList(int i); //删除第i个节点并返回其值
};
template <class ELEM>
List<ELEM>::List(int n)
{
head=last=new ListNode;
cout<<"请输入第一个节点的数据: ";
cin>>head->data;
cout<<endl;
ListNode * temp;
int count=2;
while(count<=n-1)
{
temp=new ListNode;
cout<<"请输入第"<<count<<"个节点的数据: ";
cin>>temp->data;
temp->link=NULL;
last->link=temp;
last=temp;
count++;
}
}
template <class ELEM>
ListNode<ELEM> * List<ELEM>::Trace(int i)
{
ListNode * temp=head;
int count=1;
while(count!=i)
{
temp=temp->link;
count++;
}
return temp;
}
template <class ELEM>
ELEM List<ELEM>::getValue(int i)
{
ListNode * temp=trace(i);
return temp->data;
}
template <class ELEM>
void List<ELEM>::insertValue(int i,ELEM value)
{
ListNode * left=trace(i-1);
ListNode * right=trace(i);
ListNode * temp=new ListNode;
temp->data=value;
temp->link=left->link;
left->link=temp;
}
template <class ELEM>
ELEM List<ELEM>::delList(int i)
{
ListNode * temp=trace(i);
ListNode * left=trace(i-1);
ELEM result=temp->data;
left->link=temp->link;
delete temp;
return result;
}
void main()
{
List<int> list(4);
}
请大家帮我改正一下,谢谢!!
#include <iostream.h>
template <class ELEM>
struct ListNode
{
ELEM data;
ListNode * link;
};
template <class ELEM>
class List
{
private:
ListNode * head;
ListNode * last;
public:
List(int n); //创建长度为n的单链表
ListNode * Trace(int i); //返回第i个节点的指针
ELEM getValue(int i); //取得地i个节点的数据值
void insertValue(int i,ELEM value); //在第i个节点位置插入数据为value的节点
ELEM delList(int i); //删除第i个节点并返回其值
};
template <class ELEM>
List<ELEM>::List(int n)
{
head=last=new ListNode;
cout<<"请输入第一个节点的数据: ";
cin>>head->data;
cout<<endl;
ListNode * temp;
int count=2;
while(count<=n-1)
{
temp=new ListNode;
cout<<"请输入第"<<count<<"个节点的数据: ";
cin>>temp->data;
temp->link=NULL;
last->link=temp;
last=temp;
count++;
}
}
template <class ELEM>
ListNode<ELEM> * List<ELEM>::Trace(int i)
{
ListNode * temp=head;
int count=1;
while(count!=i)
{
temp=temp->link;
count++;
}
return temp;
}
template <class ELEM>
ELEM List<ELEM>::getValue(int i)
{
ListNode * temp=trace(i);
return temp->data;
}
template <class ELEM>
void List<ELEM>::insertValue(int i,ELEM value)
{
ListNode * left=trace(i-1);
ListNode * right=trace(i);
ListNode * temp=new ListNode;
temp->data=value;
temp->link=left->link;
left->link=temp;
}
template <class ELEM>
ELEM List<ELEM>::delList(int i)
{
ListNode * temp=trace(i);
ListNode * left=trace(i-1);
ELEM result=temp->data;
left->link=temp->link;
delete temp;
return result;
}
void main()
{
List<int> list(4);
}
...全文
相关推荐
链式结构堆栈类的类模板实现及用栈求解n皇后问题.zip
在这个压缩包文件“链式结构堆栈类的类模板实现及用栈求解n皇后问题.zip”中,包含的可能是一个关于如何使用C#实现链式结构的堆栈类模板,以及如何运用这个堆栈来解决经典的计算机科学问题——n皇后问题。
C++中的类模板详解及示例
"C++中的类模板是解决代码重复性问题的有效工具,允许创建能处理多种数据类型的通用类。通过引入类型参数,类模板可以应用于不同的数据类型,从而提高代码的复用性和灵活性。类模板的定义包括以下几个关键点
类模板案例-数组类.zip
另一个优点是类模板数组可以作为容器使用,类似于标准模板库(STL)中的vector容器,提供了一种灵活的、通用的、动态的数据管理方式。在使用类模板数组时,也需要注意一些潜在的问题,比如性能问题。
C++类模板详解[项目源码]
继承是面向对象编程中的另一个重要概念,文章也探讨了类模板与继承的关系。在某些情况下,需要将模板类作为基类使用,这就涉及到了类模板的特化以及在继承时需要注意的问题。
C++类模板详解[项目代码]
关于类模板在继承中的应用,文章中详细探讨了三种情况。首先,当父类是一般类而子类是模板类时,需要注意子类模板实例化时父类数据类型的问题。


