下面程序的功能是:首先,成员函数build()建立一条无序链表,由成员函数Print()输出无序链表中各结点的值;再由成员函数sort()对已建的链表根据链表结点值的大小按升序进行排序,由成员函数print()输出有序链表中各结点的值。试完善程序。[程序](4分)#include struct Node{ double num; Node *next;};class Chain{ private:Node *h; public:void sort(void); Chain(){h=0;}~Chain() { Node *p; while(h){ p=h; h=h->next; delete p; } }void build(void);void print(void){ Node *p=h; while(p){ cout<nun<<’\t’; p=p->next; } cout<<’\n’:} }; void Chain::build(void) { Node *p,*p1; double x; cout<<"输入一个实数,以0结束:"; cin>>x; while(x!=0){p=new Node;P->num=x;if(h==0) h=p1=p;else{ p1->next=p; p1=p;}cout<<"输入一个实数,以O结束:";cin>>x;}p->next=0:}void Chain::sort(void){ if(h==0)return; Node *h1,*p; h1=0; while(h){p=h;( 27 );Node *p1,*p2;if(h1==0){ h1=p; ( 28 ) ;}else if(h1->num>=p->num){ ( 29 ) ; h1=p;}else{ p2=p1=h1; while(p2->next && p2->numnum){p1=p2;p2=p2->next; }if(p2->numnum){ (30); p->next=0;}else{ p->next=p2;p1->next=p;} } } h=hl;}void main(void){Chain x; x.build();’ cout<<"排序前的链表为:"; x.print(); x.sort(); cout<<"\n排序后的链表为:"; x.print();}
参考答案:(27)h=h->next或h=p->next (28)p->next=0或h1->next=O或p->next=NULL或hl->next=NULL (29)p->next=h1 (30)p2->next=p