- /*
- * 程序的版权和版本声明部分
- * Copyright (c)2013, 烟台大学计算机学院学生
- * All rightsreserved.
- * 文件名称: object.cpp
- * 作者:吴妍
- * 完成日期: 2013年04月09日
- * 版本号: v1.0
- 问题描述:模拟实验室人员流动
- * 输入描述:
- * 程序输出:无
- */
-
#include<iostream>
using namespace std;
class Student
{
public:
Student(int snum)
{
num =snum;
cout<<"学号为"<<snum<<"同学进入实验室"<<endl;
}
~Student()
{
cout<<"学号为"<<num<<"同学离开实验室"<<endl;
}
int getnum(){ return num; }
private :
int num;};
class Lablink //建立Lablink类
{
public:
Lablink()
{
pstu=NULL;
next=NULL;
}
Lablink *addstu(Lablink *head,int num);//声明函数addstu表示进入学生
Lablink *delstu(Lablink *head,int num);//声明函数delstu表示学生离开
void printstu(Lablink *head);//声明函数printstu表示剩余的学生
private:
Student *pstu;
Lablink *next;
};
Lablink* Lablink::addstu(Lablink *head,int num)//定义类外成员函数表示进入的学生
{
Student *p=new Student(num);
Lablink *plab=new Lablink;
plab->pstu=p;
if(head!=NULL)
plab->next=head;//新人插在链首
return plab;
}
Lablink* Lablink::delstu(Lablink *head,int num)//定义类外成员函数表示离开的学生
{
Lablink *pre,*cur;
pre=cur=head;
while(cur!=NULL)
{
if(cur->pstu->getnum()==num)//删除离开学生的信息
{
if(pre==cur)
{
cur=cur->next;
delete pre->pstu;
delete pre;
return cur;
}
else
{
pre->next=cur->next;
delete cur->pstu;
delete cur;
return head;
}
}
else
{
pre=cur;
cur=cur->next;
}
}
return head;
}
void Lablink::printstu(Lablink *head)//定义类外函数显示剩余学生学号
{
Lablink *cur=head;
while(cur!=NULL)
{
cout<<"学号为:"
<<cur->pstu->getnum()
<<endl;
cur=cur->next;
}
}
int main()
{
char action;
int num;
Lablink *head=NULL;
while(cin>>action>>num)
{
switch(action)
{
case 'I':
head=head->addstu(head,num);break;
case 'O':
head=head->delstu(head,num);break;
case 'P':
head->printstu(head);break;
}
}
return 0;
}
实验室人员流动
最新推荐文章于 2024-06-25 22:53:54 发布