当前位置: 首页 > 计算机 > 问题详情
问题

阅读以下说明和c++代码 将应填入(n)处的字句写在对应栏内。 【说明】 本程序将两个从小到大的有序链

阅读以下说明和c++代码,将应填入(n)处的字句写在对应栏内。

【说明】

本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 Node描述,而链表由List描述,类List的成员函数有以下几个:

creatList(): 创建从小到大的有序链表。

multiplyList(List L1, Llst L2): 将链表L1和链表L2合并。

print(): 打印链表。

【C++代码】

include <iostream>

using namespace std;

class List;

class Node{

friend class List;

public:

Node(int data){

(1);

}

private:

int data;

Node *next;

};

class List{

public:

List(){list=NULL;}

void multiplyList(List L1, List L2);

void creatList();

void print();

private:

Node *list;

};

void List::creatList()

{

Node *p, *u, *pre;

int dara;

list=NULL;

wbile(1){

cout<<"输入链表的一项: (小于零,结束链表) "<<endl;

cin>>data;

if(dara<0)break;//小于零,结束输入

p=list;

while(p !=NULL && dara>p->data){//查找插入点

pre=p;

p=p->next;

}

u=(2);

if(p==list)list=u;

else pre->next=u;

(3);

}

}

void List::multiplyList(List L1, List L2)

{

Node *pL1, *pL2, *pL, *u;

list = NULL;

pL1 = L1.list;

pL2 = L2.11st;

while(pL1 != NULL && pL2 != NULL){

if(pL1->data < pL2->data){

u = new Node(pL1->data);

pL1 = pL1->next;

}else{

u = new Node(pL2->data);

pL2 = pL2->next;

}

if(list == NULL){

list =(4);

}else{

pL->next=u;

pL=u;

}

}

pL1 = (pL1 != NULL)? pL1:pL2;

while(pL1 != NULL){

u=(5);

pL1 = pL1->next;

if(list == NULL){

list=pL=u;

}else{

pL->next=u;

pL=u;

}

}

}

void List::print()

{

Node *p;

p = list;

while(p !=NULL){

cout<<p->data<<"\t";

p=p->next;

&

发布时间:2024-05-07
参考答案

正确答案:(1) this->data=datanext=NULL(2) new Node(data)(3) u->next=p(4) pL=u(5) new Node(pL1->data)
(1) this->data=data,next=NULL(2) new Node(data)(3) u->next=p(4) pL=u(5) new Node(pL1->data) 解析:空(1)是进行一些初始化工作,类Node有两个成员变量data和next,故空(1)应填“this->data =data,next=NULL;”。
类List的createList方法中,通过while循环实现数据输入,为了升序存储链表,每读入一个数据,程序需要查找合适的插入点,亦通过一个while循环查找。因此空(2)是申请一个新的节点,应该调用Node的构造方法。故空(2)应填new Node(data),注意Node类的构造函数是有参数的。
接着将节点u插入到链表中,当p为list,说明此时应将u插入到当前第一个节点前(亦即p节点之前),将list赋值为u,否则,应将u插入到pre节点之后,p节点之前,将pre的next修改为u。这样,还需将u的next指向其下一个节点,即p,故空(3)应填u->next=p。
multiplyList负责将两个升序排列L1和L2的链表合并起来。通过while循环逐一比较,如果L1的当前节点的值大于L2的,则将L1的当前节点的值插入到结果链表list中,并将L1的当前节点指针下移,对L2同样处理。当list等于NULL时,因list初始化为NULL,则说明是结构链表的头节点。注意到else块中的pL变量的使用,可知pL变量是指向结构链表list的工作指针,故在结构链表生成第一节点时也需将其正确初始化。故空(4)应填pL=u。
while循环结束直到链表L1和L2有一个已经到达链尾。接着将剩余链表的指针赋给批L1,将剩余节点逐次加入到结果链表即可。故易得空(5)应填new Node(pL1->data)。

相关问题
  • 在SQL语言的SELECT语句中 用于对结果元组进行分组的是()字句

    在SQL语言的SELECT语句中,用于对结果元组进行分组的是()字句。A.GROUP BYB.HAVINGC.ORDER BYD.WHERE

    答案解析
  • 下列关于swith语句的描述中 正确的是()。A.switch语句中defau

    下列关于swith语句的描述中,正确的是()。A.switch语句中default字句可以没有,也可有一个B.switch语句中每个语句序列中必须有break语句C.switch语句

    答案解析
  • 试题六(共 15分) 阅读以下说明和Java代码 将应填入 (n)

    试题六(共 15分)阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】已知类 LinkedList 表示列表类,该类具有四个方

    答案解析
  • 试题五(共 15分) 阅读以下说明和C++代码 将应填入 (n)

    试题五(共 15分)阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】已知类 LinkedList 表示列表类,该类具有四个方

    答案解析
  • 试题四阅读以下网络测试的叙述 将应填入(n)处的字句写在答题纸

    试题四阅读以下网络测试的叙述,将应填入(n)处的字句写在答题纸的对应的栏内。网络测试是对网络设备、网络系统以及网络对应用的支持进行检测,以展示和证

    答案解析
  • 智能网体系结构中包含的主要物理实体或其相应功能的描述如表5-1

    智能网体系结构中包含的主要物理实体或其相应功能的描述如表5-1所示,将应填入(n)处的字句写在答题纸的对应栏内。表5-1物理实体主要功能描述(1)具有

    答案解析
  • 试题二(共 15分) 阅读以下说明和C函数 将应填入 (n) 处的字

    试题二(共 15分)阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明 1】函数Counter(int n, int w[])的功能是计算整数

    答案解析
  • 试题五(共 15分) 阅读以下说明和C++代码 将应填入 (n) 处

    试题五(共 15分)阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】已知类 LinkedList 表示列表类,该类具有四个方

    答案解析
  • 试题六(共 15分) 阅读以下说明和Java代码 将应填入 (n) 处

    试题六(共 15分)阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】已知类 LinkedList 表示列表类,该类具有四个方

    答案解析
  • 试题四 阅读以下说明和C代码 将应填入 (n) 处的字句写在答题

    试题四阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进

    答案解析

最新问题

Copyright © 2016-2023 114题库网(114158.com)All Rights Reserved.  免责声明 豫ICP备19007809号-5