[code=c]#include
#include
using namespace std;
class student
{
public:
student();
student(char*stu_name);
void setname();
char* getname();
student*getnext();
void setnext(student*astu);
private:
char name[20];
student*next;
};
class link
{
public:
link();
~link();
BOOL link_add(student*stu);
student* link_find(char*name);
BOOL link_delete(char*name);
student* link_change(student*stu,char*aname);
private:
student*head;
};
student::student()
{
strcpy(name,"待输入");
}
student::student(char*stu_name)
{
strcpy(name,stu_name);
}
char* student::getname()
{
return name;
}
void student::setname()
{
cout<<"请输入学生姓名:";
cin>>name;
}
void student::setnext(student*astu)
{
next = astu;
}
student*student::getnext()
{
return next;
}
link::link()
{
head = NULL;
}
link::~link()
{
student*pre=head,*cur;
while(pre!=NULL)
{
cur = pre->getnext();
delete(pre);
pre = cur;
}
return;
}
BOOL link::link_add(student*stu)
{
student* astu = new student();
astu = *stu;
student*cur=head,*pre=NULL;
while(cur!=NULL)
{
pre = cur;
cur = cur->getnext();
}
if(pre == NULL)
head = astu;
else
pre->setnext(astu);
return true;
}
student link::link_change(student*stu,char*aname)
{
student*astu = link_find(aname);
if(astu!=NULL)
{
astu = *stu;
return astu;
}
else
return NULL;
}
BOOL link::link_delete(char*name)
{
if(head==NULL||link_find(name)==NULL)
return false;
student*cur=head,*pre=NULL,*temp;
while(cur!=NULL&&strcmp(cur->getname(),name)!=0)
{
pre = cur;
cur = cur->getnext();
}
temp = cur->getnext();
delete cur;
if(pre == NULL)
head = temp;
else
pre->setnext(temp);
return true;
}
student link::link_find(char*name)
{
student*cur = head;
while(cur!=NULL)
{
if(strcmp(cur->getname(),name)==0)
return cur;
}
return NULL;
}
int main()
{
link students_data;
static student stu("aa");
static student stu1("bb");
students_data.link_add(&stu);
students_data.link_change(&stu1,"aa");
students_data.link_find("bb");
students_data.link_delete("bb");
delete &students_data;
printf("it works");
return 0;
}
[/code]
没打印。。