64,639
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
template <typename T> class linklist;
template<class T1>
struct Node
{
T1 data;
Node<T1>*next;
};
template<class T>
class linklist
{
public:
Node<T>*first;//设置头指针
linklist();//建立空表
linklist(T a[],int n);//构造由数组提供的元素提供
~linklist();//析构
void print();//遍历
template<typename U>
friend void Divide(linklist<U>&L); //添加你的参数
void clear(); //请添加这个函数
};
template<class T>
linklist<T>::linklist()
{
first=new Node<T>;NULL;
first=NULL;
}
template<class T>
linklist<T>::linklist(T a[],int n)//头插法
{
first=new Node<T>;//头结点的data域为空
first->next=NULL;
Node<T>*p=first;//工作指针的定义
for(int i=0;i<n;i++)
{
Node<T>*s=new Node<T>;
s->data=a[i];
s->next=p->next;
p->next=s;
p=s;
}
}
template<class T>
linklist<T>::~linklist()
{
clear();
}
template<class T>
void linklist<T>::clear()//删除
{
while(first!=NULL)
{
Node<T>*q=first;
first=first->next;//指针后移必须在删除结点之前完成
delete q;
}
}
template<typename U>
void Divide(linklist<U>&L)//
{
Node<U>*p,*q,*newfirst;
p=L.first->next;q=L.first;
newfirst=new Node<U>();
newfirst->next=NULL;
Node<U>*h=newfirst;
while(p!=NULL)
{
if(p->data%2==0)
{q=p;p=p->next;}
else
{
p->next=h->next;
h->next=p;
h=p;
p=p->next;
q->next=p;
}
}
}
template <typename T>
void linklist<T>::print()
{
/*添加你的代码*/
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,23};
linklist<int> list(a,10);
list.print();
Divide(list);
list.print();
}