1.后插法创建链表
2输出链表的信息
3输入id,查找书的信息
4.插入一条图书信息
5.插入多条图书信息
#include <iostream>
#include <string>
using namespace std;
typedef struct book
{
string id;
string name;
double price;
}Book;
typedef struct lnode
{
Book data;
struct lnode *next;
}LNode,*LinkList;
void CreateList_R(LinkList &L,int n)
{
LinkList r,p;
int i;
L=new LNode;
L->next=NULL;
r=L;
for(i=1;i<=n;i++)
{
p=new LNode;
cout<<"输入第"<<i<<"个结点的id,name,price:";
cin>>p->data.id>>p->data.name>>p->data.price;
p->next=NULL;
r->next=p;
r=p;
}
}
void Print_List(LinkList L)
{
LinkList p;
p=L->next;
cout<<"输出链表的结点信息:"<<endl;
while(p)
{
cout<<p->data.id<<" "<<p->data.name<<" "<<p->data.price<<endl;
p=p->next;
}
}
LNode *Search(LinkList L,string iid)
{
LinkList p;
p=L->next;
while(p && p->data.id!=iid)
p=p->next;
return p;
}
void insertOneBook(LinkList L,string sid,string sname,double sprice){
LinkList LB;
LB=new LNode();
LB->data.id=sid;
LB->data.name=sname;
LB->data.price=sprice;
LB->next=L->next;
L->next=LB;
}
void insertMoreBook(LinkList L){
string sid,sname;
double sprice;
int n,i;
cout<<"输入要插入的条数 :";cin>>n;
for( i=1;i <= n; i ++){
cout<<"第"<<i<<"本:id , name , price";
cin>>sid>>sname;
cin>>sprice;
insertOneBook(L,sid,sname,sprice);
}
}
int main()
{
int choose=1,n;
LinkList L,p;
string iid;
string sid,sname;
double sprice;
cout<<"1后插法创建链表:"<<endl;
cout<<"2输出链表的信息:"<<endl;
cout<<"3输入id,查找书的信息:"<<endl;
cout<<"4.插入一条图书信息"<<endl;
cout<<"5.插入多条图书信息"<<endl;
while(choose)
{
cout<<"请选择:";
cin>>choose;
switch(choose)
{
case 1 : cout<<"输入创建链表的长度:";
cin>>n;
CreateList_R(L,n);
break;
case 2: Print_List(L);
break;
case 3: cout<<"输入要查找的书的id:";
cin>>iid;
p=Search(L,iid);
if(p)
{
cout<<"id为"<<iid<<"的书的信息是:";
cout<<p->data.id<<" "<<p->data.name<<" "<<p->data.price<<endl;
}
else
cout<<"id为"<<iid<<"的书的信息没找到,查找失败!"<<endl;
break;
case 4: cout<<"输入要插入的图书信息:id,name,price";
cin>>sid>>sname>>sprice;
insertOneBook(L,sid,sname,sprice);
break;
case 5: cout<<"输入要插入的图书信息:id,name,price";
insertMoreBook(L);
break;
}
}
return 0;
}