直接上代码啦。。。。。。。。。。。。。
#include <iostream>
using namespace std;
template <class T> class List;
template <class T> class ListIterator;
template <class T>
class Node
{
public:
template <class T >
friend class List;
friend class ListIterator<T>;
private:
T data;
Node *link;
Node(T d) :data(d), link(0) {}
};
template <class T>
class List
{
friend class ListIterator<T>;
public:
List() { first = 0; }
void Insert(T n); //插入元素
void Delete(T k); //删除元素
void Invert(); //链表翻转
void Concatenate(List * p); //连接两个链表
void Show();
private:
Node<T> *first;
};
template <class T>
class ListIterator //链表迭代器
{
public:
ListIterator(List<T> &l) :list(l),curr(l.first) {}
bool NotNull(); //判断当前是否为null
bool NextNotNull();//判断下一个是否为null
T *First(); //获取第一个元素
T* Next(); //获取下一个元素
private:
const List<T> &list;
Node<T> *curr;
};
template &