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

admin2018-10-23  40

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp,阅读下列程序说明和代码,功能如下:
    从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,然后把数据打印到屏幕,然后释放内存。
    其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
    (1)在父节点的Next中保存新插入的节点的指针,请在注释//********1********后添加适当的语句。
    (2)把pNext的子节点赋给pNext本身,请在注释//********2********后添加适当的语句。
    (3)判定p的子节点不为空,如果不为空,则打印p其中的数据到屏幕,请在注释//********3********后添加适当的语句。
    (4)用temp1保存动态申请内存节点的链表头,请在注释//********4********后添加适当的语句。
    注意:仅在函数指定位置添加语句,请勿改动主
函数main与其他函数中的任何内容。
1  #include<iostream.h>
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*pParent=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<<p->next->data<<’’’’;
46    p=p->next;
47    }
48   cout<<end1;
49  }
50  void Delete(TestClass* p)
51  {
52  //********4********
53   TestClass* temp1=;
54    TestClass* temp2;
55    while(temp1!=NULL)
56    {
57    temp2=temp1->next;
58    delete temp1;
59    temp1=temp2;
60    }
61  }
62  void main()
63  {
64    int i=0;
65    TestClass head;
66    do
67    {
68    int data;
69    cout<<’’请输入一个数字:’’<<end1;
70    cin>>data;
71    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*temp1=;”补充完整为:TestClass*temp1=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要求“用temp1保存动态申请内存节点的链表头”。p为链表,p->next为链表头。程序中的语句“TestClass*temp1=;”中temp1没有被赋值,所以修改为“TestClass*temp1=p->next;”。
转载请注明原文地址:https://kaotiyun.com/show/a5Ap777K
0

最新回复(0)