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

C#编程

开发平台:

Visual C++

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