使用VC6打开考生文件夹下的源程序文件modi3.cpp,阅读下列程序说明和代码,功能如下: 从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,然后把数据打印到屏幕,然后释放内存。 其中定义的类并不完整,按

admin2019-07-10  36

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp,阅读下列程序说明和代码,功能如下:
    从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,然后把数据打印到屏幕,然后释放内存。
    其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)在父节点的Next中保存新插入的节点的指针,请在注释∥********1********后添加适当的语句。
(2)把pNext的子节点赋给pNext本身,请在注释
//料料料料2料料料料后添加适当的语句。
(3)判定P的子节点不为空,如果不为空,则打印p其中的数据到屏幕,请在注释∥********3********后添加适当的语句。
(4)用templ保存动态申请内存节点的链表头,请在注释∥********4********后添加适当的语句。
    注意:仅在函数指定位置添加语句,请勿改动主函数
main与其他函数中的任何内容。
#include
clasS TestClasS
{
public:
    TestClass(int data=0)
    {
    this一>data=data;
this一>next=NULL;
    };
    int data;
    TestClass*next;
};
void Insert(TestClas s*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
    {
    pParent=pNext ;
    ∥********2********
    }
    }
    if(pNext==NULL)
        {
    PParent一>next=temp;
    return;
    }
}
void printf(TestClass*P)
{
∥********3********
    while()
    {
    cout<next一>data<<””;
    P=P一>next;
    }
    cout<}
void Delete(TestClass*P)
{
∥********4********
    TestClass*templ=;
    TestClass*temp2;
    while(templ!=NULL)
    {
    temp2=templ一>next;
    delete templ;
    templ=temp2;
    }
}
void main()
{
    int i=0 ;
    TestClass head;
    do
    {
    int data;
    cout<<“请输入一个数字:
”<    cin>>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环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的math主函数开始入手,可以看出程序通过调用类TestClass实现各种输出操作。
解题思路
(1)题目1要求“在父节点的Next中保存新插入的节点的指针”。对于指针的操作pParent->next为pParent的子结点,在父节点的Next中保存新插入的节点的指针,即“pParent->next=temp;"。
(2)题目2要求“把pNext的子节点赋给pNext本身"。pNe~->next为pNext的子结点,把pNext的子节点赋给pNext本身,即“pNext=pNext->next;”。
(3)注释∥*******3********下是判定P的子节点不为空。P的子节点是p->next。程序中的“while()”缺乏P的子节点不为空的判断条件,所以修改为“while(p.>next!=NULL)”。
(4)题目4要求“用tempi保存动态申请内存节点的链表头”。P为链表,p->next为链表头。程序中的语句“TestClass*templ=;”中templ没有被赋值,所以修改为“TestClass*templ=p->next;”。
转载请注明原文地址:https://kaotiyun.com/show/SW8p777K
0

最新回复(0)