CHAPTER3-12.cpp
上传用户:fjc899
上传日期:2007-07-03
资源大小:187k
文件大小:1k
源码类别:

STL

开发平台:

C/C++

  1. //文件名:CHAPTER3-12.cpp
  2. #include<iostream.h>
  3. #include<string.h>
  4. class Student
  5. {   int number;
  6.     static Student *ip;
  7.     Student *p;
  8. public:
  9.     Student(){p=NULL;}
  10.    Student(int n);
  11. static Student* get_first(){return ip;}
  12.     int get_number(){return this->number;}
  13. Student* get_next(){return this->p;}
  14. };
  15. Student::Student(int n):number(n)  //依据学号的大小顺序将学生对象插入链表
  16. {  p=NULL;
  17.     if(ip==NULL)ip=this;  //如果是第一个则使头指针指向该对象
  18.     else{Student *temp=ip;   
  19. if(n<ip->number){ip=this;p=temp;}//如学号小于第一个学生对象的学号则使头指针指向该对象
  20. else { while(temp){
  21.                   if(n<temp->p->number)
  22.              { p=temp->p;  //链中间对象的插入
  23.    temp->p=this; break;
  24. }else { if(temp->p->p==NULL)  //最后一个链的插入
  25.         {temp->p->p=this;break; } }
  26. temp=temp->p;
  27.    }
  28. }
  29.   }
  30. }
  31. Student* Student::ip=NULL;
  32. template<class T>
  33. class Class
  34. {   int num;
  35.     T *p;
  36. public:
  37.    Class(){}
  38.    Class(int n):num(n){p=NULL;}
  39.     T* insert(int n){p=new T(n);return p;}
  40.    void list_all_member(T* x)
  41.    {   T *temp=x;
  42.        while(temp) { cout<<temp->get_number()<<",";temp=temp->get_next();}
  43.   }
  44. };
  45. void main()
  46. { Class<Student> x97x(9707);
  47.   x97x.insert(23);
  48.   x97x.insert(12);
  49.   x97x.insert(38);
  50.   x97x.insert(22);
  51.   x97x.insert(32);
  52.   x97x.list_all_member(Student::get_first());
  53. }