代码通俗易通,如下 List.h #include<stdio.h> template <class T> class ListNode { T data; ListNode<T>* link; public: ListNode():link(NULL){} ListNode(T value):link(NULL),data(value){} ~ListNode(){} void SetLink(ListNode<T>* next); ListNode<T>* GetLink(); T& GetData(); }; template <class T> void ListNode<T>::SetLink(ListNode<T>* next) { link=next; } template <class T> ListNode<T>* ListNode<T>::GetLink() { return link; } template <class T> T& ListNode<T>::GetData() { return data; } template <class T> class List { ListNode<T>* head; ListNode<T>* tail; public: List(); ~List(){}; bool AddTail(T value); bool RemoveTail(); bool InsertAt(int index,T value); bool RemoveAt(int index); T& GetAt(int index); bool IsEmpty(); int GetCount(); void RemoveAll(); ListNode<T>* GetHead(); ListNode<T>* GetTail(); void SetTail(ListNode<T>* newtail); ListNode<T>* GetNodeAt(int index);