65,176
社区成员




#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);
}