只是把曾经用C语言写过单链表改写为类模板。直接上代码:
#define _CRT_SECURE_NO_DEPRECATE 1
#include<assert.h>
#include<iostream>
using namespace std;
template<class T>
class SList;
template<class T>
class ListNode
{
friend SList<T>;
public:
ListNode(const T& data)
: _next(nullptr)
, _data(data)
{}
T& Getdate()
{
return _data;
}
ListNode<T>* Getnext()
{
return _next;
}
private:
T _data;
ListNode<T>* _next;
};
template <class T>
class SList
{
friend ostream& operator<<(ostream& _cout, SList<T>& s)
{
for (ListNode<T>* cur = s._head; cur != nullptr; cur = cur->Getnext())
_cout << cur->Getdate() << "--->";
return _cout;
}
public:
SList()
:_head(nullptr)
,_tail(nullptr)
{}
SList(const SList<T>& s)
:_head(nullptr)
,_tail(nullptr)
{
if (!s._head)
return;
ListNode<T>*