⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test8_polytest.cpp

📁 定义并实现复数类
💻 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 + -