#include<iostream>
using namespace  std;
class Student
{
  char name[20];
  int  enroll;
public:
void display();
int get_enroll();
  
};
class Student_List
{
struct StudentNote
{
StudentNote (Student& Student):stu(Student),next(0),pref(0){}
    Student stu;
StudentNote *next,*pref;//指向前后节点的指针
};
StudentNote  *first,*last;//链首指针和链尾指针
public:
Student_List();
void add(Student& s);//插入
void remove(Student& s);//删除
StudentNote* find(Student& s);//查找
void print();
~Student_List();
};  
Student_List::Student_List()
{
   first = 0;
   last  = 0;
}
void Student_List::add(Student& s)
{
  StudentNote* p =  new   StudentNote(s); 
  p->next = first;
  first = p;
  (last ? p->next->pref : last) = p;
}
void  Student_List::print()
{
   for(StudentNote* p = first; p; p = p->next)
   p->stu.display();
       cout<<"\n";
}
Student_List::~Student_List()
{
  for(StudentNote* p; p = first; delete p)
  first = first->next;
}
/*StudentNote*  Student_List::find(Student& s)
{
   for(StudentNote* p = first; p; p = p->next)
   if(p->stu.get_enroll() == s.get_enroll())  return p;
   return 0;
}*/
void Student_List::remove(Student& s)
{
  if(!( StudentNote* p->stu.get_enroll() = find(s)->stu.get_enroll()))
}
为什么 if(!( StudentNote* p->stu.get_enroll() = find(s)->stu.get_enroll()))
  这句是错的   头大了 想不出问题的原因

解决方案 »

  1.   

    if(!( StudentNote* p->stu.get_enroll() == find(s)->stu.get_enroll()))
    ?中间少了个“=”?
      

  2.   

    #include<iostream>
    using namespace  std;
    class Student
    {
      char name[20];
      int  enroll;
    public:
    void display();
    int get_enroll();
    bool operator == ( Student& s){return enroll == s.get_enroll();}
      
    };
    class Student_List
    {
    struct StudentNote
    {
    StudentNote (Student& Student):stu(Student),next(0),pref(0){}
        Student stu;
    StudentNote *next,*pref;//指向前后节点的指针
    };
    StudentNote  *first,*last;//链首指针和链尾指针
    public:
    Student_List();
    void add(Student& s);//插入
    void remove(Student& s);//删除
    StudentNote* find(Student& s);//查找
    void print();
    ~Student_List();
    };  
    Student_List::Student_List()
    {
       first = 0;
       last  = 0;
    }
    void Student_List::add(Student& s)
    {
      StudentNote* p =  new   StudentNote(s); 
      p->next = first;
      first = p;
      (last ? p->next->pref : last) = p;
    }
    void  Student_List::print()
    {
       for(StudentNote* p = first; p; p = p->next)
       p->stu.display();
           cout<<"\n";
    }
    Student_List::~Student_List()
    {
      for(StudentNote* p; p = first; delete p)
      first = first->next;
    }
    StudentNote*  Student_List::find(Student& s)
    {
       for(StudentNote* p = first; p; p = p->next)
       if(p->stu==s)  return p;
       return 0;
    }
    void Student_List::remove(Student& s)
    {
      StudentNote* p = find(s);
      if(!p) return ;
      (p->next ? p->next->pref : last ) = p->pref;
      (p->pref ? p->pref->next : first ) = p->next;
      delete p;
    }
    int  main()
    {
          
    }
      这是我最后的代码 只有
    StudentNote*  Student_List::find(Student& s)
    {
       for(StudentNote* p = first; p; p = p->next)
       if(p->stu==s)  return p;
       return 0;
    }
    编译哟错误 百思不得其解  不知道错在哪里
      

  3.   

    Student_List::StudentNote* Student_List::find(Student& s)
    {
    for(StudentNote* p = first; p; p = p->next)
    if(p->stu==s) return p;
    return 0;
    }
      

  4.   

    怎么不把错误提示贴出来?!就是编译时error后面的那行文字。