下载此文档

类和面向对象数据结构练习题与答案.docx


文档分类:IT计算机 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
该【类和面向对象数据结构练习题与答案 】是由【1660287****】上传分享,文档一共【17】页,该文档可以免费在线阅读,需要了解更多关于【类和面向对象数据结构练习题与答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。类和面向对象&数据结构练习题与答案类和面向对象局部
1、以下有关类的说法不正确的选项是OO


(正确答案)

答案解析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
2、下面()项是对构造函数和析构函数的正确定义。
voidX::X(),voidX::^X()
乂:《(参数)”::~乂()(正确答案)
X::X(参数),X::〜X(参数)
voidX::X(参数),voidX::~X(参数)
答案解析:构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。
3、()的功能是对象进行初始化。


(正确答案)

答案解析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作。
4、以下选项中不属于面向对象程序设计特征的是()o

3、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、()等5个特性。
、可移植性和可扩充性
、有穷性和确定性(正确答案)
、有穷性和稳定性
、稳定性和确定性
答案解析:算法是指为解决某个特定问题而采取确实定且有限的步骤。一个算法应当具有以下五个特性:1)、有穷性:一个算法包含的操作步骤应该是有限的。2)、确定性:算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必须能得到相同的执行结果。3)、可行性:算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。4)、有0个或多个输入:在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。5)、有一个或多个输出:算法的目的是为了求解,这些解只有通过输出才能得到(注意:算法要有一个以上的输出)。
4、下面程序段的时间复杂度是()o
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i];
[单项选择题]
0(m2)
0(n2)
0(mn)(正确答案)
0(m+n)
答案解析:解析:for(i=0;i<m;i++)/m+1次/for(j=0;j<n;j++)/m(n+1)次/a[i][j]=ij;/mn次/
T=2mn+2m+l=0(mn)o
5、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示()。
0(n)
0(nlog2n)
0(n2)(正确答案)
0(log2n)
答案解析:算法的时间度量依据算法中最大语句频度来估算,它是问题规模n的某个函数f(n),算法的时间度量记作:T(n)=O(f(n))
6、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的选项是()。

,以便调试、修改和扩充
,算法能适当地做出反响或进行处理,不会产生不需要的运行结果
(正确答案)
答案解析:高效性除了考虑时间性能,还要考虑空间性能。
7、在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需向后移动()个元素。
n-i
n-i+1(正确答案)
n-i-1
i
答案解析:除了第i个元素之前的元素,其余元素均需要移动,所以移动元素个数为n-(i-l)=n-i+lo
8、非空的循环单链表head的尾结点p满足()。
p->next==head(正确答案)
p->next~NULL
p==NULL
p-head
答案解析:循环单链表首尾节点相连,因此p->next==head。
9、链表不具有的特点是()o
(正确答案)



答案解析:链表只能顺序访问,只能从第一个元素开始逐个地读取元素,不能随机访问任一元素。
10、在双向循环链表中,在P指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是()o
p->next=q;q->prior=p;p->next->prior=q;q->next=q;
p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;
q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;(正确答案)
q->next=p->next;q->prior=p;p->next=q;p->next=q;
答案解析:需先赋值插入节点的信息,再修改当前节点,防止节点信息丧失。
n、从表中任一结点出发,都能扫描整个表的是()。


(正确答案)

答案解析:只有循环链表能从任一结点出发,找到所有元素。
12、线性表L=(al,a2,……,an),以下说法正确的选项是()。



,其余每个元素都由一个且仅有一个直接前驱和直接后继(正确答案)
答案解析:A第一个和最后一个元素不符合条件;B线性表可以为空表;C线性表不要求排序。
13、在以下对顺序表进行的操作中,算法时间复杂度为0(1)的是()o
(1<)(正确答案)
()
()

答案解析:假设顺序表L,长度为n,求第i个节点L[i],直接取因此为。⑴。
答案B需要移动n-i+l个节点,因此为0(n)
答案C也需要移动n-i个节点
答案D根据排序方法不同最慢0(/2),最快O(nlogn)
14、在以下的表达中,正确的选项是()o


(正确答案)

答案解析:顺序表和链表各有优劣,适用于不同的场景,链表在插入或删除元素是不需要移动其他元素,插入删除效率更高,所以C正确。
15、在一个单链表中,q所指结点是p所指结点的前驱结点,假设在q和p之间插入一个结点S,那么执行()O
s->next=p->next;p->next=s;
p->next=s->next;s->next=p;
q->next=s;s->next=p;(正确答案)
p->next=s;s->next=q;
答案解析:原来的节点关系为q、P,即q->next=p,插入s后的节点关系为q、s、q,因此,先让p指向s,即q->next=s;然后让s指向q,即s->next=p。
16、一个栈的输入序列为:a,b,c,d,e,那么栈的不可能输出的序列是
a,b,c,d,e
d,e,c,b,a
d,c,e,a,b(正确答案)
e,d,c,b,a
答案解析:栈是先进后出的结构,对于C,由于e出栈时,a、b已进栈且还没有出栈,因此,b应该比a出,所以C错误。
17、设计一个判别表达式中括号是否配对的算法,采用()数据结构最正确。



(正确答案)
答案解析:右括号需要匹配最近的左括号,具有后进先出的特点,因此用栈更合适。
18、栈和队列都是()o


(正确答案)

答案解析:由于栈和队列都属于线性表,所以线性表的顺序存储结构和链式存储结构同样适用于栈和队列。队列(Queue)是一种先进先出(FIFO)的线性表,队列是只允许在一端进行插入,另一端进行删除运算的线性表。允许删除的那一端称为队首(Front),允许插入运算的另一端称为队尾(Rear)。栈(Stack)是限定仅在表尾进行插入或删除操作的线性表。表尾端称为栈项(top),表头端称为栈底(bottom)o故栈是后进先出(LIFO)的线性表。可见,栈和队列都是限制存储点的线性结构
19、设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,那么队列中元素的个数为()。
9
31
61(正确答案)
39
答案解析:一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,那么循环队列中元素的个数为(rear-front+M)%M
20、设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前面的条件是
()O
a在b的右方
a在b的左方(正确答案)
a是b的祖先

答案解析:中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。
21、设一棵二叉树的中序遍历序列:badce,后序遍历序列:bdeca,那么二叉树先序遍历序列为Oo
adbce
decab
debac
abcde(正确答案)
答案解析:由后序bdeca,确定a是根节点,由中序badce,确定a节点左边有b节点,右边是cde节点。
总的树的形状a
\
c
\
e
前序abcde
22、在一棵具有5层的满二叉树中结点总数为()o
31(正确答案)
32
33
16
答案解析:具有n层的满二叉树节点总数为2、-1
23、任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序
()O
(正确答案)



答案解析:先序、中序和后序遍历的区别在根节点的显示次序,不影响叶子节点的相对次序。
24、假定在一棵二叉树中,度为2的结点数为15,度为1的结点数为30,那么叶子结点数为()个。
15
16(正确答案)
17
47
答案解析:叶子节点的度为0,度0=度2+1;
25、排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为()。


(正确答案)

答案解析:插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法[1]。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。
26、有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100),当折半查找值为82的结点时,()次比拟后查找成功。
1
4(正确答案)
2
8
答案解析:表长为13。
①第一次和第7位数45比拟,发现比45大,就看45后的数字
②第二次和77比拟,比77大,看77后面数字
③第三次和95比拟,比95小,看前面
④第四次和82比拟,相同,即完毕。

(正确答案)

答案解析:面向对象设计是建立在“对象”概念上的方法学,对象是面向对象语言中类的实体,其特点包括:①标识唯一性,对象可区分;②分类性,可以将具有相同属性和操作的对象抽象成类;③多态性,同一个操作对于不同对象表现不同的行为;④封装性,屏蔽数据的具体结构以及操作的算法;⑤模块独立性好,对象内部各种元素结合紧密,内聚性强。
5、拷贝构造函数具有的以下特点中,()是错误的。
,系统将自动生成一个默认的
,并且是该类对象的引用

(正确答案)
答案解析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。
6、关于静态成员的描述中,()是错误的。

(正确答案)


答案解析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现局部最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。
7、关于友元的描述中,()是错误的。
,它被说明在类体内(正确答案)

类和面向对象数据结构练习题与答案 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1660287****
  • 文件大小26 KB
  • 时间2023-01-13