#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()))
这句是错的 头大了 想不出问题的原因
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()))
这句是错的 头大了 想不出问题的原因
?中间少了个“=”?
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;
}
编译哟错误 百思不得其解 不知道错在哪里
{
for(StudentNote* p = first; p; p = p->next)
if(p->stu==s) return p;
return 0;
}