问答题
使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。该程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数。程序一边读入整数,一边构造一个以大到小顺序链接的链表,直至输入0时结束。然后顺序输出链表上各表元的整数值。主函数每读入一个整数,就调用函数fun(),函数fun()将还未出现在链表上的整数按从大到小的顺序插入到链表中。为了插入方便,链表在表首有一个辅助表元。注意:不能修改程序的其他部分,只能修改fun()函数。#include<iostream>class NODE{public:int data;NODE *next;};void fun(NODE *list,int x){}void main(){int.x;NODE *head,*p;/*首先建立只有辅助袁元的空链表*/head=new NODE;head->next=NULL;std::cout<<"Enter integers, end with0"<<std::endl;while(1){std::cin>>x;if(x==0)break;fun(head,x),}for(p=head->next;p!=NULL;p=p->next;std::cout<<p->data<<' ';std::cout<<Std::endl;do{p=head->next;delete head;head=p;)while(p);}
【正确答案】正确答案:NODE*u,*v,*p; u=list; v=u->next; while(v!=NULL&&x<v->data)//寻找插入的位置 { u=v; v=v->next; } if(v==NULL||x>v->data)//判断是否为新的元素 { p=new NODE; P->data=x;//生成新的元素 p->next=v; u->next=p;//插入新的元素 }
【答案解析】解析:(1)首先利用while循环寻找插入元素的位置。 (2)然后判断要插入的元素是否为新元素。 (3)如果为新元素,那么执行单链表的操作,插入元素。