类模板问题

li13796780802 2008-03-26 11:00:26
请各位高手帮忙看一下下面的程序,对单链表的操作,用类模板总是出问题
请大家帮我改正一下,谢谢!!
#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);
}
...全文
63 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
li13796780802 2008-03-27
  • 打赏
  • 举报
回复
哦,谢谢两位了啊 !!!
ryfdizuo 2008-03-26
  • 打赏
  • 举报
回复
#include  <iostream>
using namespace std;

template <class ELEM>
struct ListNode
{
ELEM data;
ListNode * link;
};
template <class ELEM>
class List
{
private:
ListNode<ELEM> * head;
ListNode<ELEM> * last;
public:
List(int n); //创建长度为n的单链表
ListNode<ELEM> * 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<ELEM>;
cout <<"请输入第一个节点的数据: ";
cin>>head->data;
cout <<endl;
ListNode<ELEM> * temp;
int count=2;
while(count <=n-1)
{
temp=new ListNode<ELEM>;
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<ELEM> * temp=head;
int count=1;
while(count!=i)
{
temp=temp->link;
count++;
}
return temp;
}
template <class ELEM>
ELEM List <ELEM>::getValue(int i)
{
ListNode<ELEM> * temp=trace(i);
return temp->data;
}
template <class ELEM>
void List <ELEM>::insertValue(int i,ELEM value)
{
ListNode<ELEM> * left=trace(i-1);
ListNode<ELEM> * right=trace(i);
ListNode<ELEM> * temp=new ListNode<ELEM>;
temp->data=value;
temp->link=left->link;
left->link=temp;
}
template <class ELEM>
ELEM List <ELEM>::delList(int i)
{
ListNode<ELEM> * temp=trace(i);
ListNode<ELEM> * left=trace(i-1);
ELEM result=temp->data;
left->link=temp->link;
delete temp;
return result;
}
void main()
{
List <int> list(4);
}
ryfdizuo 2008-03-26
  • 打赏
  • 举报
回复
将所有的ListNode改为ListNode<ELEM>

64,188

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧