#pragma once//函数文件#include
#include
#include
using namespace std;template
//  节点  class ListNode{public: DataType _data; ListNode* _next; ListNode(const DataType& x); ~ListNode();};template
ListNode
::ListNode(const DataType& x) :_data(x) ,_next(NULL){}template
ListNode
::~ListNode(){}// 单链表操作template
class LinkList {private: ListNode
* _pHead; ListNode
* _pTail; size_t _size;public: LinkList(); LinkList(const LinkList& tmp); ~LinkList(); void PushBack(const DataType& data); void PopBack(); void operator=(const LinkList& tmp); void Display();};template
LinkList
::LinkList() : _size(0) , _pHead(NULL) , _pTail(NULL){}template
LinkList
::LinkList(const LinkList& tmp) :_size(tmp._size) , _pHead(NULL) , _pTail(NULL){ ListNode
* head = tmp._pHead; while (head) { PushBack(head->_data); head = head->_next; }}template
LinkList
::~LinkList(){}template
void LinkList
::PushBack(const DataType& data){ if (_pHead == NULL) { _pHead = new ListNode
(data); _pTail = _pHead; } else { _pTail->_next = new ListNode
(data); _pTail = _pTail->_next; } ++_size;}template
void LinkList
::PopBack(){ if (_pHead == _pTail) { if (_pHead != NULL) { delete _pHead; _pHead = NULL; _pTail = NULL; } } else { ListNode
* tmp = _pHead; while (tmp->_next!=_pTail) { tmp = tmp->_next; } delete _pTail; _pTail = tmp; tmp->_next = NULL; }}template
void LinkList
::operator=(const LinkList& tmp){ ListNode
* head =tmp. _pHead; while (_pHead) { PopBack(); } while (head) { PushBack(head->_data); head = head->_next; }}template
void LinkList
::Display(){ ListNode
* tmp = _pHead; while (tmp) { cout <
_data << "-->" ; tmp=tmp->_next; } cout << "NULL" << endl;}#include
//主函数#include
#include
#include"linklist.h"using namespace std;void test1(){ LinkList
 l1; l1.PushBack("woshishuaige 0"); l1.PushBack("woshishuaige 1"); l1.PushBack("woshishuaige 2"); l1.Display(); /*l1.PopBack(); l1.PopBack(); l1.PopBack(); l1.PopBack(); l1.PopBack(); l1.Display();*/ LinkList
 l2(l1); l2.Display(); l2.PopBack(); l2.PopBack(); l2.Display(); l2 = l1; l2.Display(); }int main(){ test1(); return 0;}