链表问题问题!
建立一个对象,输入要的数组的个数,对他们进行链表创建,运行:
#include<iostream>
using namespace std;
class data
{
public:
data(void);
data *next;
void show(void);
float s;
private:
int n;
char na[20];
};
void data::show(void)
{
cout<<n<<" "<<na<<" "<<s<<endl;
}
data::data(void)
{
cout<<"请输入学生的学号、姓名、成绩:"<<endl;
cin>>n>>na>>s;
}
int main(void)
{
data *creat(data *head,int n);
data *p,*head;
int x;
cout<<"qing shuru geshu:"<<endl;
cin>>x;
head=new data[x];
p=creat(head,x);
while(p!=0)
{
data();
p=p->next;
}
p=head;
while(p!=0)
{
if(p->s<=60)
p->show();
p=p->next;
}
return 0;
}
data *creat(data *head,int n)
{
data *p;
int i=1;
p=head;
while(p<n)
{
p->next=l+1;
p++;
i++;
}
l->next=0;
return head;
}
为什么总是while(p!=0)这句多运行一倍,而while(p!=0)//输出不及格的学生的数据这句却没运行半个?
{ {
data(); if(p->s<=60)
p=p->next; p->show();
} p=p->next;
} 类 链表
[解决办法]
楼主, 我帮你把代码格式化下,
#include<iostream>
using namespace std;
class data
{
public:
data(void);
data *next;
void show(void);
float s;
private:
int n;
char na[20];
};
void data::show(void)
{
cout<<n<<" "<<na<<" "<<s<<endl;
}
data::data(void)
{
cout<<"请输入学生的学号、姓名、成绩:"<<endl;
cin>>n>>na>>s;
}
int main(void)
{
data *creat(data *head,int n);
data *p,*head;
int x;
cout<<"qing shuru geshu:"<<endl;
cin>>x;
head=new data[x];
p=creat(head,x);
while(p!=0)
{
data();
p=p->next;
}
p=head;
while(p!=0)
{
if(p->s<=60)
p->show();
p=p->next;
}
return 0;
}
data* creat(data *head,int n)
{
data *p;
int i=1;
p=head;
while(p<n)
{
p->next=l+1;
p++;
i++;
}
l->next=0;
return head;
}
[解决办法]
楼主, 你确认你编译通过了的?????????????????
data* creat(data *head,int n)
{
data *p;
int i=1;
p=head;
while(p<n) // 这里比较干嘛?
{
p->next=l+1; // 这里又是什么含义。l哪里来的 ?
p++;
i++;
}
l->next=0;
return head;
}