C++连表问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:39:18
#include<iostream>
using namespace std;
struct stu
{
long num;
float score;
struct stu *next;
};
int n ;
struct stu *creat(void)
{ n++;
struct stu *head,*p1,*p2;
n=0;
p1=p2=new stu;
cin>>p1->num>>p1->score;
head=0;
while(p1->num!=0)
{
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=new stu;
cin>>p1->num>>p1->score;
}
p2->next=0;
return (head);
}
void print(struct stu *head)
{struct stu *p;
p=head;
if(head!=0)
do
{ cout<<p->num<<p->score;
p=p->next;
}while(p!=0);
}
int main()
{ struct stu *q;
q=creat();
print(q);
return 0;
}

为什么我打不出来啊

#include<iostream>
using namespace std;
struct stu
{
long num;
float score;
struct stu *next;
};
int n=0;
struct stu *creat(void)
{
//n++;这个应该放到循环里巴,不然有什么用?
struct stu *head,*p1,*p2;
//n=0; 一边++一边又归零?你到底想干什么?
p1=p2=new stu;
cin>>p1->num>>p1->score;
head=0;
while(p1->num!=0)
{
n++;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=new stu;
cin>>p1->num>>p1->score;
}
p2->next=0;
return (head);
}
void print(struct stu *head)
{
struct stu *p;
p=head;
if(head!=0)
do
{
cout<<p->num<<' '<<p->score<<endl;//加个回车,结果好看点,别给自己添麻烦
p=p->next;
}while(p!=0);
}

int main()
{
struct stu *q;
q=creat();