我发现我最后输出老是忘记r=r->next ;orz…
(这代码比我前两次写的简洁多了~
#include<iostream>
using namespace std;
typedef struct LNode
{
string ISBN;
string name;
double price;
struct LNode *next;
}LNode,*LinkList;
int createList(LinkList &L)
{
int num=0;
L=new LNode;
L->next=NULL;
LinkList r=L;//r是扫描指针
string name;
string ISBN;
double price;
while(1)
{
cin>>ISBN>>name>>price;
if(ISBN=="0"||name=="0"||price==0) break;
LinkList p=new LNode;
p->ISBN=ISBN;
p->name=name;
p->price=price;
p->next=NULL;
r->next=p;
r=p;
num++;
}
return num;
}
int main()
{
LinkList s1;
int num=createList(s1);
LinkList r=s1->next;
cout<<num<<endl;
while(r)
{
cout.precision(2);
cout<<r->ISBN<<" "<<r->name<<" "<<fixed<<r->price;
if(r->next) cout<<endl;
r=r->next;
}
return 0;
}