📄 test8_polytest.cpp
字号:
/*#include<iostream>
#include<string>
using namespace std;
class member//自动成为抽象基类
{
friend class List;
protected:
int no;
string name;
string job;
member *mem;
member *next;
public:
member(int sno,string sname,string sjob)
{
no=sno;
name=sname;
job=sjob;
}
virtual int getno()=0; // 纯虚函数
virtual string getname()=0;
virtual string show_job()=0;
virtual void print()
{
cout<<"编号: "<<getno()<<endl;
cout<<"姓名: "<<getname()<<endl;
cout<<"职业: "<<show_job()<<endl;
}
virtual void insert(){};
};
class Student:public member
{
private:
friend class List;
public:
Student(int sno,string sname,string sjob):member(sno,sname,sjob)
{
}
virtual int getno()//子类中virtual可以不用声明,由基类自动成为虚函数!
{
return no;
}
virtual string getname()
{
return name;
}
virtual string show_job()
{
return job;
}
void insert()
{
mem=new Student(no,name,job);
}
};
class Teacher:public member
{
private:
friend class List;
public:
Teacher(int sno,string sname,string sjob):member(sno,sname,sjob)
{
}
virtual int getno()
{
return no;
}
virtual string getname()
{
return name;
}
virtual string show_job()
{
return job;
}
void insert()
{
mem=new Teacher(no,name,job);
}
};
class Staff:public member
{
private:
friend class List;
public:
Staff(int sno,string sname,string sjob):member(sno,sname,sjob)
{
}
virtual int getno()
{
return no;
}
virtual string getname()
{
return name;
}
virtual string show_job()
{
return job;
}
void insert()
{
mem=new Staff(no,name,job);
}
};
class List{
private:
member *root;
public:
List(){root=0;}
void print()
{
member *cur=root;//这里不能直接使用root来调用,会导致打印后链表内容清空!
while(cur!=0)
{
cur->print();
cur=cur->next;
}
}
void insert_member(member *node)
{
int Lno=node->no;
member *curr_node=root;
member *previous=0;
while(curr_node!=0&&curr_node->no!=Lno)
{
previous=curr_node;
curr_node=curr_node->next;
}
node->insert();
node->mem->next=curr_node;
if(previous==0)
root=node->mem;
else previous->next=node->mem;
}
void remove(int sno)
{
member *curr_node=root;
member *previous=0;
while(curr_node!=0&&curr_node->no!=sno)
{
previous=curr_node;
curr_node=curr_node->next;
}
if(curr_node!=0&&previous==0)
{
root=curr_node->next;
delete curr_node;
}
else if (curr_node!=0&&previous!=0)
{
previous->next=curr_node->next;
delete curr_node;
}
}
};
int main()
{
List li;
Student stu(5401,"刘孟君","学生老大");
Teacher tea(1047,"房莉","教师精英");
Staff sta(9527,"倪聪","大佬跟班");
li.insert_member(&stu);
li.insert_member(&tea);
li.insert_member(&sta);
li.print();
cout<<endl<<"删除编号为5401、1047的成员"<<endl<<endl<<"输出删除操作后链表中剩余成员"<<endl;
li.remove(5401);
li.remove(1047);
li.print();
cout<<endl;
return 0;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -