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

admin2015-05-30  21

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp,阅读下列程序说明和代码,功能如下:
    从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,然后把数据打印到屏幕,然后释放内存。
    其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
    (1)在父节点的Next中保存新插入的节点的指针,请在注释//********1********后添加适当的语句。
    (2)把pNext的子节点赋给pNext本身,请在注释//********2********后添加适当的语句。
    (3)判定P的予节点不为空,如果不为空,则打印P其中的数据到屏幕,请在注释//********3********后添加适当的语句。
    (4)用templ保存动态申请内存节点的链表头,请在注释//********4********后添加适当的语句。
    注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
    1    #include
    2    Class TestClass
    3    {
    4    public:
    5    TestClass(int data=0)
    6    {
    7    this->data=data;
    8   thiS->next=NULL;
   9    };
  10    int data;
  11   TestClass*next;
  12   };
  13   void Insert(TestClass* p,int data)
  14   {
  15   TestClass*temp=new TestClass(data);
  16   TestClass* parent=p ;
  17   TestClass* pNext=p->next ;
  18    while(pNext)
  19    {
  20    if(data>pNext->data)
  21    {
  22    //********1********
  23
  24   temp->next=pNext;
  25    return;
  26    }
  27    Else
  28    {
  29   pParent=pNext;
  30    //********2********
  31
  32    }
  33    }
  34    if(pNext==NULL)
  35    {
  36    pParent->next=temp;
  37    return;
  38    }
  39    }
  40    void printf(TestClass* p)
  41    {
  42    //********3********
  43    while()
  44    {
  45    cout<next->data<<"";
  46   p=p一>next ;
  47    }
  48    cout<  49   }
  50    void Delete(TestClass* p)
  51    {
  52    //********4********
  53   TestClass*templ=;
  54   TestClass*temp2;
  55    while(templ!=NULL)
  56    i
  57   temp2=templ一>next;
  58   delete templ,
  59   templ=temp2;
  60    }
  61   }
  62   void main()
  63   {
    64    int i=0 ;
    65   TestClass head;
    66   do
    67    {
    68    int data;
    69    cout<<"请输入一个数字:"<    70    cin>>data ;
    j71    if(data==0)break ;
    72    Insert(&head,data);
    73    }while(1);
    74    printf(&head);
    75    Delete(&head);
    76    return;
    77   }

选项

答案(1)添加语句:pParent一>next=temp ; (2)添加语句:pNext=pNext一>next; (3)将“while()”补充完整为:while(p->next!=NULL) (4)将“TestClass*templ=;”补充完整为:TestClass * templ=p->next;

解析 在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的main主函数开始入手,可以看出程序通过调用类TestClass实现各种输出操作。
    [解题思路]
    (1)题目1要求“在父节点的Next中保存新插入的节点的指针”。对于指针的操作pParent->next为pParent的子结点,在父节点的Next中保存新插入的节点的指针,即“pParent->next=temp;”。
    (2)题目2要求“把pNext的子节点赋给pNext本身”。pNext->next为pNext的子结点,把pNext的子节点赋给pNext本身,即“pNext=pNext->next;”。
    (3)注释//********3********下是判定P的子节点不为空。P的子节点是p->next。程序中的“while()”缺乏P的子节点不为空的判断条件,所以修改为“while(p->next!=NULL)”。
    (4)题目4要求“用templ保存动态申请内存节点的链表头”。P为链表,p->next为链表头。程序中的语句“TestClass*templ=;”中templ没有被赋值,所以修改为“TestClass*templ=p->next;”。
转载请注明原文地址:https://kaotiyun.com/show/jPNp777K
0

随机试题
最新回复(0)