更多"将两个长度为n的递增有序表归并成一个长度为2n的递增有序表,最少需要进"的相关试题:
[单项选择]将两个长度为n的递增有序表归并成一个长度为2n的递增有序表,最少需要进行关键字比较()次。
A. I
B. n-1
C. n
D. 2n
[单项选择]将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是 (28) 。
A. n-1
B. n
C. 2n-1
D. 2n
[填空题]
下面程序的功能是;将两个有序链表(降序捧序)合并为一个有序链表,函数merge(node *h1,node *h2)将由h1和h2分别指向的己排序的两个链表,合并为一个依然有序的链表。注意;对于数据大小相同的结点,都要保留在合并后的链表上。主函数产生两条已降序排序的链表,并输出合并后链表上的数据值.
例如,原链表上各结点的数据依次为;
h1:15,9,8,7,3
h2:15,12,10,7,3,2
合并后得到的新链表为;15,15,12, 10,9,8,7,7,3,3,2
【程序]
#include
struct node{
int data;
node*next;
};
node *merge(node *h1,node *h2)
{
if(h1==NULL) return h2;
if(h2==NULL) return h1;
node *h=NULL;
if(___(1)___){
h=h1;
h1=h1->next;
}
else{
h=h2;
h2=h2->next;
}
node *p=h;
while(___(2)___){
if(h1->data >=h2->data){
p->next=h1;
p=h1;
h1=h1->next;
}
else{
p->next=h2;
p=
[简答题]【说明】
本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 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::multipl
[多项选择]【说明】
本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 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
[简答题]【说明】本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类Node描述,而链表由类List描述。类List的成员函数有以下几个。
①createList( ):创建从小到大的有序链表。
②multiplyList(List L1,List L2):将链表L1和链表L2合并。
③print( );打印链表。
# include <iostream.h>
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 createList( );
void print( );
private:
Node *list;
;
void List::createList( )
Node *p, *u, *pm;
int data;
list = NULL;
while (1)
cout<<"输入链表的一项: (小于零,结束链表)"<<end1;
cin >> data;
if(data<0)break; //小于零,结束输入
p = list;
while (p != NULL && data > p->data) //查找插入点
pre = p;
p = p->next;
u= (2) :
if(p==list)
lis
[填空题]如果关系中的一个属性不是本关系的主关键字或候选关键字,而是另外一个关系的主关键字或候选关键字,该属性就称为这个关系的 【11】 。
[单项选择]两个递增序列A和B的长度分别为m和n(m<n),将二者归并为一个长度为m+n的递增序列时,(),归并过程中元素的比较次数最少。
A. 当A的最大元素大于B的最大元素时
B. 当A的最大元素小于B的最小元素时
C. 当A的最小元素大于B的最小元素时
D. 当A的最小元素小于B的最大元素时
[单项选择]两个递增序列A和B的长度分别为m和n(m<n),将两者归并为一个长度为m+n的递增序列时,______,归并过程中元素的比较次数最少。
A. 当A的最大元素大于B的最大元素时
B. 当A的最大元素小于B的最小元素时
C. 当A的最小元素大于B的最小元素时
D. 当A的最小元素小于B的最大元素时
[单项选择]
某顺序存储的表格,其中有90000个元素,已按关键字递增有序排列,现假定对各个元素进行查找的概率是相同的,并且各个元素的关键字皆不相同。
用顺序查找法查找时,平均比较次数约为 (46) ,最大比较次数为 (47) 。
现把90000个元素按排列顺序划分成若干组,使每组有g个元素(最后一组可能不足 g个)。查找时,先从第一组开始,通过比较各组的最后一个元素的关键字,找到欲查找的元素所在的组,然后再用顺序查找法找到欲查找的元素。在这种查找法中,使总的平均比较次数最小的g是 (48) ,此时的平均比较次数是 (49) 。当g的值大于等于 90000时,此方法的查找速度接近于 (50) 。
46()
A. 25000
B. 30000
C. 45000
D. 90000
[填空题]有一个学生关系,其关键字为学号,又有一个课程关系,其关键字为课程号,另有一个选修关系,其关键字为学号和课程号的组合,则学号和课程号分别为该关系的______。
[填空题]如果表中一个字段不是本表的主关键字,而是另外一个表的主关键字或候选关键字,这个字段称为【 】。