#include<iostream.h>
#include<string.h>
 class demo
{
 friend class list;
 private:
  char name[20];
  long tel;
  char add[60];
  demo* next;
 public:
  demo(const char* r,long s,const char* t);
  void display(void); 
}; 
 class list
{
 private:
  demo* head;
 public:
  list(void);
  ~list();
  void insert(demo*);
  void del(const char*);
  void ser(const char*);
  void display();
};
 demo::demo(const char* r,long s,const char* t)
{
 strcpy(name,r);
 tel=s;
 strcpy(add,t);
}
 void demo::display()
{
 cout<<"姓名："<<name<<" 电话："<<tel<<" 地址："<<add<<endl;
}
 list::list(void)
{
 head=0;
 cout<<"链表开始"<<endl;
}
 list::~list()
{
 cout<<"链表结束"<<endl;
}
 void list::insert(demo *i)
{ 
 demo* node;
 if(head==0)
 {
  head=i;
  head->next=0;
 }
 else
 {
  node=head;
  while(node->next)
   node=node->next;
  node->next=i;
  i->next=0;
 }
}
 void list::del(const char* s)
{
 demo* node1,*node2;	
 int flag=0;
 node1=head;
 if(strcmp(head->name,s)==0)
 {
  head=head->next;
  flag=1;
 }
 else
 {
  while(node1)
   if(strcmp(node1->name,s)==0)
   {
    node2->next=node1->next;
    flag=1;
    break;
   }
   else
   {
    node2=node1;
    node1=node1->next;
   }
 }
 if(!flag)
  cout<<"未找到要删除的结点！"<<endl;
 else
  cout<<"结点被删除，其姓名是："<<s<<endl;
}
 void list::ser(const char* s)
{
 demo* node=head;
 int flag=0;
 while(node)
 {
  if(strcmp(node->name,s)==0)
  {
   flag=1;
   break;
  }
  else
   node=node->next;
 }
 if(flag)
  cout<<"查找成功！"<<endl;
 else
  cout<<"未找到该结点！"<<endl;
}
 void list::display(void)
{
 demo* node;
 if(head==0)
  cout<<"空链表！"<<endl;
 else
 { 
  node=head;
  while(node)
  {
   node->display();
   node=node->next;
  }
 }
}
 int main()
{
 demo p1("付勇智",8229094,"张湾医院"),p2("杨毅",8238787,"电子实验室");
 list table;
 table.insert(&p1);
 table.insert(&p2);
 table.display();
 table.ser("付勇智");
 table.del("杨毅");
 table.display();
 return(0); 
}