问答题
使用VC6打开考生文件夹下的源程序文件modi3.cpp,阅读下列程序说明和代码,功能如下:
从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,然后把数据打印到屏幕,然后释放内存。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)在父节点的Next中保存新插入的节点的指针,请在注释∥*******1********后添加适当的语句。
(2)把pNext的子节点赋给pNext本身,请在注释∥********2********后添加适当的语句。
(3)判定P的子节点不为空,如果不为空,则打stp其中的数据到屏幕, 请在注释
∥********3********后添加适当的语句。
(4)用temp1保存动态申请内存节点的链表头,请在注释∥********4********后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
#i12Clude
Class TeStClass
{
public:
TestClass(int data=0)
{
this->data=data;
this一>next=NULL;
},
int data;
TestClass* mext;
},
void Insert(TestClass*P,int data)
{
TestClass*temp=new TestClass(data);
TeStClass*pparent=p;
TeStClass*pNext=p一>next;
while(pNext)
{
if(data>pNext一>data)
{
∥********1********
temp一>next=pNext;
return;
}
E1se
f
pParent=pNext;
∥********2********
}
}
if(pNext=NULL)
{
pParent一>next=temp;
retuen;
}
}
void printf(TestClass*P)
{
∥********3********
while()
{
cout<next一>data<<“”;
P=P一>next;
}
cout<next;
delete temp1;
temp1=temp2;
}
}
Void main()
{
int i=0;
TestClass head;
dp
{
int data;
cout<<“请输入一个数字:”<>data;
if(data=0)break;
Insert(&head,data);
}while(1);
printf(&head);
Delete(&head);
return;
}
【正确答案】正确答案:(1)添加语句:pParent->next=temp; (2)添加语句:pNext=pNext一>next; (3)将“while()”补充完整为:while(p一>next!=NULL) (4)将“TestClass*templ=;”补充完整为:TestClasS*templ=p一>next;
【答案解析】解析:在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的main主函数开始入手,可以看出程序通过调用类TestClass实现各种输出操作。