填空题
以下程序中各函数的功能是;createlist (int *x,int num)根据数组x中的数据产生具有num个结点的链表;concatenate(list *h1,list *h2)将h1和h2所指向的两个链表连接成一个链表;sort(list *h,int num)将h所指向的链表(有num个结点)按结点数据的升序排列,在排序过程中只交换结点上的数据,即将最小数放到第一个结点上,将次小数放到第二个结点上,…,直至最大数放在最后一个结点上为止;delelist1依次删除链表上的结点。
[程序](4分)
#include
struct list{
int data;
struct list *next;
);
void print (list *h) {
while (h){ cout<data<<'/t'; h=h->next;}
cout<2(27) 3 ;
min=p1->data;
p3=p1; p2=p1->next;
while( 4(28) 5 ){
if (min>p2->data){
min=p2->data; p3=p2;
}
p2=p2->next ;
}
if(p3 !=pl){
p3->data =p1->data; p1->data =min;
}
}
return h;
}
list *createlist(int *x,int num) {
list *tmp1,*tmp2,*p ;
int i;
p= new list;
p->data=x[0] ;
tmpl=p ;
for(i=1;inext=NULL;
6(29) 7;
tmpl->next=tmp2 ;
tmpl=tmpl->next ;
}
return p;
}
list *concatenate(list *h1,list *h2)
{ list *tmp;
tmp=h1 ;
while( 8(30) 9)
tmp=tmp->next ;
tmp->next=h2 ;
return h1;
}
void delelist(list *h)
{ list *p;
while (h) {
p=h; h=h->next ; delete p;
}
}
void main(void)
{ int a[]= {3,12,8,9,11},b[]= {13,5,20,20,35,18} ;
list *h1,*h2,*h;
hl=createlist (a,5) ; print (hl) ;
h2=createlist (b,6) ; print (h2) ;
h=concatenate (hl,h2) ; print (h) ;
h=sort (h,11) ; print (h) ;
delelist (h) ;
}