//定义单向链表类模板
template <class Type>
class Link
{
public:
Link(); //构造函数
void Insert(Type&) ; //插入结点
void PrintLink(); //输出链表信息
~Link();//析构函数
protected:
struct Node//结点:结构类型
{
Node* next;//指针域:指向下一结点
Type* p; //数据域:结点信息用指针类型
};
Node* head;//头指针
};
template<class Type>//构造函数
Link<Type>::Link()
{
head=0;//创建空链表
}
/*在链首插入新结点,使每个新结点都是新的第一个结点*/
template<class Type>
void Link<Type>::Insert(Type& t) //下面这段表示什么意思求解!!
{
Node* temp=new Node;
temp->p=&t;
temp->next=head;
head=temp;
}
template<class Type>
void Link<Type>::PrintLink()//遍历函数
{
for( Node *pp=head ; pp ; pp = pp->next )
{
cout<<*(pp->p)<<" ";
}
cout<<endl;
}
template<class Type>
Link<Type>::~Link()//析构函数
{
Node* pp;
while( pp = head )
{
head = head->next;
delete pp->p;
delete pp;
}
}
int main()
{
//实例化“类模板”生成“模板类”,并创建空链表对象DoubleLink
Link< double > DoubleLink;
//建立单向链表
for(int i=1;i<7 ;i++)
{
DoubleLink.Insert(*new double(i+0.1));//插入1个链表结点
}
//遍历单向链表
DoubleLink.PrintLink( );
return 0;
}
template <class Type>
class Link
{
public:
Link(); //构造函数
void Insert(Type&) ; //插入结点
void PrintLink(); //输出链表信息
~Link();//析构函数
protected:
struct Node//结点:结构类型
{
Node* next;//指针域:指向下一结点
Type* p; //数据域:结点信息用指针类型
};
Node* head;//头指针
};
template<class Type>//构造函数
Link<Type>::Link()
{
head=0;//创建空链表
}
/*在链首插入新结点,使每个新结点都是新的第一个结点*/
template<class Type>
void Link<Type>::Insert(Type& t) //下面这段表示什么意思求解!!
{
Node* temp=new Node;
temp->p=&t;
temp->next=head;
head=temp;
}
template<class Type>
void Link<Type>::PrintLink()//遍历函数
{
for( Node *pp=head ; pp ; pp = pp->next )
{
cout<<*(pp->p)<<" ";
}
cout<<endl;
}
template<class Type>
Link<Type>::~Link()//析构函数
{
Node* pp;
while( pp = head )
{
head = head->next;
delete pp->p;
delete pp;
}
}
int main()
{
//实例化“类模板”生成“模板类”,并创建空链表对象DoubleLink
Link< double > DoubleLink;
//建立单向链表
for(int i=1;i<7 ;i++)
{
DoubleLink.Insert(*new double(i+0.1));//插入1个链表结点
}
//遍历单向链表
DoubleLink.PrintLink( );
return 0;
}