数据结构相关题目
来源:互联网 发布:便携式打印机 知乎 编辑:程序博客网 时间:2024/06/05 07:15
#include <iostream.h>
#include <string.h>
#include <conio.h>
class Student {
friend class List;
protected:
char name[20];
int number;
static Student *ptr;
Student *next;
public:
Student(char *,int);
virtual void print();
virtual void insert(){};
};
class UnderGrad:public Student{
friend class List;
int level;
public:
UnderGrad(char *,int,int);
void print();
void insert();
};
class Graduate:public Student{
friend class List;
char teaname[20];
public:
Graduate(char *,int,char *);
void print();
void insert();
};
class List //定义异质链表类
{
Student *root;
public:
List(){root=0;}
void insert_Student(Student *node);
void remove(char *name);
void print_List();
};
Student::Student(char *name,int number){
strcpy(Student::name,name);
Student::number=number;
next=0;
}
void Student::print(){ //输出基类数据成员
cout<<"name:"<<name<<"\n";
cout<<"number:"<<number<<"\n";
}
UnderGrad::UnderGrad(char *name,int number,int level):Student(name,number){
UnderGrad::level=level;
}
void UnderGrad::print(){
Student::print();
cout<<"level: "<<level<<"\n";
}
void UnderGrad::insert(){
ptr=new UnderGrad(name,number,level);
}
Graduate::Graduate(char *name,int number,char *teaname):Student(name,number){
strcpy(Graduate::teaname,teaname);
}
void Graduate::print(){
Student::print();
cout<<"teacher's name: "<<teaname<<"\n";
}
void Graduate::insert(){
ptr=new Graduate(name,number,teaname);
}
void List::insert_Student(Student *node){
char key[20];
strcpy(key,node->name);
Student *curr_node=root;
Student *previous=0;
while(curr_node!=0 && strcmp(curr_node->name,key)<0){
previous=curr_node;
curr_node=curr_node->next;
}
node->insert();
node->ptr->next=curr_node;
if(previous==0)
root=node->ptr;
else previous->next=node->ptr;
}
void List::remove(char *name){
Student *curr_node=root;
Student *previous=0;
while(curr_node!=0 && strcmp(curr_node->name,name)!=0){
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;
}
}
void List::print_List (){
Student *cur=root;
while(cur!=0){
cur->print();
cur=cur->next;
}
}
Student *Student::ptr=0;
void main(){
List people;
UnderGrad und("Zhangshan",000111,2);
Graduate gra("Lisi",012121,"Wangermazi");
people.insert_Student(&und);
people.insert_Student (&gra);
people.print_List ();
getch;
people.remove ("Zhangshan");
people.remove ("Lisi");
people.print_List ();
}
- 数据结构相关经典题目
- 查找数据结构相关题目
- 数据结构相关题目
- 三道与数据结构相关的题目
- C语言数据结构相关编程题目(目录)
- 数据结构题目
- 数据结构题目
- 数据结构-题目
- 数据结构 相关
- 数据结构相关
- 经典数据结构题目
- 经典数据结构题目
- 数据结构实习题目
- 数据结构课程设计题目
- 数据结构笔试题目总汇
- 数据结构笔试题目总汇
- 微软 数据结构面试题目
- 无敌的数据结构题目
- 11个vs调试技巧
- hdu 1506 Largest Rectangle in a Histogram(dp)
- KVO
- 解决tomcat服务器内存溢出
- 性能测试时系统响应时间
- 数据结构相关题目
- 系统管理技巧
- UILabel 行间距
- AsyncHttpClient 源码分析
- Http通信
- Active MQ 使用
- 43.事件传递 事件响应者链 touch方法
- Python中range和xrange的区别
- CoolFormat源代码格式化工具