#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;}