使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。该程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数。程序一边读入整数,一边构造一个以大到小顺序链接的链表,直至输入0时结束。然后顺序输

admin2019-05-29  45

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。该程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数。程序一边读入整数,一边构造一个以大到小顺序链接的链表,直至输入0时结束。然后顺序输出链表上各表元的整数值。主函数每读入一个整数,就调用函数fun(),函数fun()将还未出现在链表上的整数按从大到小的顺序插入到链表中。为了插入方便,链表在表首有一个辅助表元。
    注意:不能修改程序的其他部分,只能修改如fun()函数。
1  #include<iostream>
2   class NODE
3  {
4  public:
5    int data;
6    NODE *next;
7  };
8  void fun(NODE*list,int x)
9  {
10
11  }
12  void main()
13 {
14    int x;
15    NODE*head,*p;
16  /*首先建立只有辅助袁元的空链表*/
17    head=new NODE;
18    head->next=NULL;
19    std::cout<<’’Enter integers,end with 0’’<<std::end1;
20    while(1)
21    {
22    std::cin>>x;
23    if(x==0)
24    break;
25    fun(head,x);
26    }
27    for(p=head->next;p!=NULL;p=p->next)
28    std::cout<<p->data<<’ ’;
29    std::cout<<std::end1;
30    do {
31    p=head->next;
32    delete head;
33    head=p;
34    } while(p);
35  }

选项

答案1 NODE *u,*v,*p; 2 u=list; 3 v=u->next; 4 while(v!=NULL&&x<v->data) //寻找插入的位置 5 { 6 u=v;v=v->next; 7 } 8 if(v==NULL || x>v->data) //判断是否为新的元素 9 { 10 p=new NODE; 11 p->data=x; //生成新的元素 12 p->next=v; 13 u->next=p; //插入新的元素 14 }

解析 (1)该程序功能是构造一个以大到小顺序链接的链表。它的解题思路,首先寻找插入的位置,然后判断是否为新元素,最后插入。
    (2)从已给部分源程序的main主函数开始入手,核心函数void fun(NODE*list,int x)中的list参数为单链表,x为要插入的数据。
    (3)首先利用while循环寻找插入元素的位置。
    (4)然后判断要插入的元素是否为新元素。。
    (5)如果为新元素,那么执行单链表的操作,插入元素。
转载请注明原文地址:https://jikaoti.com/ti/DXA0FFFM
0

相关试题推荐
最新回复(0)