只想知道为什么函数调用不行??说明的是我工具是用trube c的
1.在键盘上输入相关资料,建立一个单向链表HA,该链表按学生学号从小到大的次序链结(在输入时,用户不一定严格按学生学号从小到大的次序输入);2.输出链表HA(供核对);
3.从刚生成的链表HA中,找出所有考试成绩大于等于85分以上的学生的资料,生成另外一个链表HB,该链表按同学的考试成绩从大到小的次序链结;
4.输出新生成的链表HB(供核对)。
下面这个程序可以实现上面的要求。但是good函数(85分以上的生成另一个链表输出求只能在函数里面做如果像Creat函数那样另编一个输出函数却会乱码为什么呢?)
#include<iomanip.h>
#include<iostream.h>
#include<conio.h>
struct student
{ long num;
float score;
student *next;
};
student *Creat()
{ student *h,*p,*q,*k,*d;int i;
h=NULL; i=1;
p=new student;
cout<<"\nInput ["<<i<<"] num and score[End <0] \n";
cin>>p->num>>p->score;
i++;
while(p->num>0&&p->score>0)
{ if(h==NULL)
{ h=p;
q=p;
k=p;
}
else
{ if(p->num>=q->num)
{ q->next=p;
q=p;
}
if(p->num<q->num)
{ if(p->num<k->num)
{ p->next=k;
h=p;
k=h;
}
else
{ while(p->num>k->num)
{ d=k;
k=k->next;
}
p->next=k;
d->next=p;
k=h;
}
}
}
p=new student;
cout<<"\nInput["<<i<<"] num and score\n";
cin>>p->num>>p->score;
i++;
}
q->next=NULL;
return h;
}
student *good(student *h)
{ student *p,*L,*q,*k,*n,*m;
p=h;
L=NULL;
q=new student;
q->num=p->num;
q->score=p->score;
while(p!=NULL)
{ if(q->score>=85)
{ if(L==NULL)
{ L=q;
k=q;
n=q;
}
else
{ if(q->score<=k->score)
{ k->next=q;
k=q;
}
else
{ if(q->score>=n->score)
{ q->next=n;
L=q;
n=q;
}
else
{ while(q->score<n->score)
{ m=n;
n=n->next;
}
q->next=n;
m->next=q;
n=L;
}
}
}
}
if(q->score<85)
delete(q);
if(p!=NULL)
{ p=p->next;
q=new student;
q->num=p->num;
q->score=p->score;
}
}
k->next=NULL;
cout<<"\nHB list\n";
if(k==NULL)
{ cout<<"\nNULL";
}
else
{
while(n!=NULL)
{ cout<<"\n"<<n->num<<"\t"<<n->score;
n=n->next;
}
}
return L;
}
void print(student *h)
{ student *p;
p=h;
cout<<"\nHA list:\n";
while(p!=NULL)
{ cout<<"\n"<<p->num<<"\t"<<p->score;
p=p->next;
}
}
void main()
{ student *head;char ch;
do
{
head=Creat();
print(head);
good(head);
cout<<"\nContinue??(n\anykey)\n";
ch=getch();
}while(ch!='n');
}
为什么加了这个输出L链表(85分的) 却无法正确输出呢?一定要在生成链表的那个函数里面输出吗?
void cou(student *L)
{student *p;
p=L;
cout<<"\nHB list\n";
if(p==NULL)
{ cout<<"\nNULL";
}
else
{
while(p!=NULL)
{ cout<<"\n"<<p->num<<"\t"<<p->score;
p=p->next;
}
}