tlist.h
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:2k
源码类别:

C#编程

开发平台:

Visual C++

  1. //=====================================
  2. // tlist.h
  3. // List Template Definition
  4. //=====================================
  5. #ifndef TLIST
  6. #define TLIST
  7. #include<iostream>
  8. using namespace std;
  9. //-------------------------------------
  10. template<typename T>
  11. struct Node{
  12.   Node(const T& d):c(d),next(0),pref(0){}
  13.   T c;
  14.   Node *next, *pref;
  15. };//-----------------------------------
  16. template<typename T>
  17. class List{
  18.   Node<T> *first, *last;
  19. public:
  20.   List();
  21.   void add(const T& c);
  22.   void remove(const T& c);
  23.   Node<T>* find(const T& c)const;
  24.   void print()const;
  25.  ~List();
  26. };//-----------------------------------
  27. template<typename T>
  28. List<T>::List():first(0),last(0){}
  29. //-------------------------------------
  30. template<typename T>
  31. void List<T>::add(const T& n){
  32.   Node<T>* p = new Node<T>(n);
  33.   p->next = first;  first = p;
  34.   (last ? p->next->pref : last) = p;
  35. }//------------------------------------
  36. template<typename T>
  37. void List<T>::remove(const T& n){
  38.   if(!(Node<T>* p = find(n))) return;
  39.   (p->next ? p->next->pref : last) = p->pref;
  40.   (p->pref ? p->pref->next : first) = p->next;
  41.   delete p;
  42. }//------------------------------------
  43. template<typename T>
  44. Node<T>* List<T>::find(const T& n)const{
  45.   for(Node<T>* p=first; p; p=p->next)
  46.     if(p->c==n) return p;
  47.   return 0;
  48. }//------------------------------------
  49. template<typename T>
  50. List<T>::~List(){
  51.   for(Node<T>* p; p=first; delete p)
  52.     first = first->next;
  53. }//------------------------------------
  54. template<typename T>
  55. void List<T>::print()const{
  56.   for(Node<T>* p=first; p; p=p->next)
  57.     cout<<p->c<<"  ";
  58.   cout<<"n";
  59. }//====================================
  60. #endif    // TLIST
  61.