#include
#include
using namespace std;
class Data
{
public:
Data();
Data(int i,string n,int b);
void SetId(int i);
void SetName(string n);
void SetBorrow(int b);
int GetId()const;
string GetName()const;
int GetBorrow()const;
private:
int id;
string name;
int borrow;
};
Data::Data()
{
id=0;
name="";
borrow=0;
}
Data::Data(int i,string n,int b)
{
id=i;
name=n;
borrow=b;
}
void Data::SetId(int i)
{
id=i;
}
void Data::SetName(string n)
{
name=n;
}
void Data::SetBorrow(int b)
{
borrow=b;
}
int Data::GetId()const
{
return id;
}
string Data::GetName()const
{
return name;
}
int Data::GetBorrow()const
{
return borrow;
}
class Node
{
public:
Node();
Node(Data d);
void SetData(Data *d);
Data GetData()const;
void SetNext(Node n);
Node GetNext()const;
private:
Data data;
Node *next;
};
Node::Node()
{
data=NULL;
next=NULL;
}
Node::Node(Data *d)
{
data=d;
next=NULL;
}
void Node::SetData(Data *d)
{
data=d;
}
Data Node::GetData()const
{
return data;
}
void Node::SetNext(Node n)
{
next=n;
}
Node Node::GetNext()const
{
return next;
}
class List
{
public:
List();
void Insert(int id);
void ShowMax()const;
void ShowMix()const;
void Show()const;
private:
Node *head;
Node *tail;
};
List::List()
{
head=NULL;
tail=NULL;
}
void List::Insert(int id)
{
int i,b;
string n;
cout<<"请输入编号:";
cin>>i;
cout<< "请输入书名:";
cin>>n;
cout<<"请输入借书次数:";
cin>>b;
Data *d=new Data(i,n,b);
Node *node=new Node(d);
if(!head)
{
head=node;
tail=node;
head->SetNext(NULL);
}
else
{
Node *now=head,*last=head;
while(now)
{
if(now->GetData()->GetId()==id)
break;
last=now;
now=now->GetNext();
}
if(now==head)
{
node->SetNext(head);
head=node;
}
else
{
last->SetNext(node);
node->SetNext(now);
}
}
}
void List::ShowMax()const
{
Node *node=head->GetNext(),*max=head;
while(node)
{
if(max->GetData()->GetId()GetData()->GetId())
max=node;
node=node->GetNext();
}
cout<<"借阅次数最多的图书信息如下:"<
coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()<
}
void List::ShowMix()const
{
Node *node=head->GetNext(),*mix=head;
while(node)
{
if(mix->GetData()->GetId()>node->GetData()->GetId())
mix=node;
node=node->GetNext();
}
cout<<"借阅次数最少的图书信息如下:"<
coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()<
}
void List::Show()const
{
Node *node=head;
cout
while(node)
{
coutGetData()->GetId()<<"\t"<GetData()->GetName()<<"\t"<GetData()->GetBorrow()<
node=node->GetNext();
}
}
void main()
{
List l=new List();
l->Insert(1);
l->Show();
l->Insert(2);
l->Show();
l->Insert(2);
l->Show();
l->ShowMix();
l->ShowMax();
}
/说明:data类为数据类,保存图书的基本信息,node为结点类,保存结点的信息,list为链表类,执行各种链表操作*/