习题整理12.25、26

1.栈也是一种线性表,也同样有顺序存储结构和链式存储结构,这种说法()
在这里插入图片描述
解析:栈是限定仅在表尾进行插入和删除操作的线性表;
线性表有顺序储存和链式储存,同样适用于栈;

4.假设 A 类有如下定义,设 a 是 A 类同一个包下的一个实例,下列语句调用哪个是错误的?()
在这里插入图片描述
解析:非静态方法只能通过实例对象来调用,不能直接通过类名调用。静态方法(static)才能通过类名直接调用
7.有一个用数组C[1…m]表示的环形队列,m为数组的长度。假设f为队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向)。若队列非空,则计算队列中元素个数的公式应为?
在这里插入图片描述
解析:分情况讨论:
若f<r<=m, 则有r-f <m,即队尾没有超出边界,则为r-f
若r<f<=m, r-f < 0, 即队尾超出边界m,那么应为m+r -f
综合两种情况,得到答案 (m+r-f) mod m

10.表达式"X=A+B*(C-D)/E"的后缀表示形式可以是()
在这里插入图片描述
解析:人工实现转换
在这里插入图片描述
12.以下说法正确的是( )。
在这里插入图片描述
解析:中序遍历的顺序是左根右,前序遍历的顺序是根左右,因此要保证最后一个节点相同的话,也就是要保证存在右子树,若中序遍历的最后一个结点是叶子节点的话说明根结点一定存在右子树。而前序遍历的最后一个是叶子结点的话不能保证根节点有右子树。(该叶子结点可能是根结点左子树的)。因此c是对的
13.下列说法正确的是
在这里插入图片描述
解析:在类方法中调用本类的类方法可直接调用。 实例方法也叫做对象方法。
类方法是属于整个类的,而实例方法是属于类的某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:
(1) 类方法中不能引用对象变量;
(2) 类方法中不能调用类的对象方法;
(3) 在类方法中不能使用super、this关键字。
(4)类方法不能被覆盖。
如果违反这些限制,就会导致程序编译错误。
与类方法相比,对象方法几乎没有什么限制:
(1) 对象方法中可以引用对象变量,也可以引用类变量;
(2) 对象方法中可以调用类方法;
(3) 对象方法中可以使用super、this关键字。

14.将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序,时间复杂度为()
在这里插入图片描述
解析:1. 在每一个链表中取出第一个值,然后把它们放在一个大小为N的数组里,然后把这个数组当成heap建成小(大)根堆。此步骤的时间复杂度为O(N)
2. 取出堆中的最小值(也是数组的第一个值), 然后把该最小值所处的链表的下一个值放在数组的第一个位置。如果链表中有一个已经为空(元素已经都被取出),则改变heap的大小。此步骤的时间复杂度为O(lg N).
3. 不断的重复步骤二,直到所有的链表都为空。
建堆只建一次,复杂度为O(N);调整堆MN-1次,复杂度为(MN-1)O(lg N)。所以为O(MNlg N)

16.下列Java代码中的变量a、b、c分别在内存的____存储区存放。
在这里插入图片描述
解析:常量池:未经 new 的常量
堆区:成员变量的引用,new 出来的变量
栈区:局部变量的引用
成员变量的引用在堆区,是因为成员变量的所属对象在堆区,所以它也在堆区。
局部变量的引用在栈区,是因为局部变量不属于某一个对象,在被调用时才被加载,所以在栈区。
classA{
privateString a = “aa”; // a 为成员变量的引用,在堆区,“aa”为未经 new 的常量,在常量池
publicboolean methodB() {
String b = “bb”; // b 为局部变量的引用,在栈区,“bb”为未经 new 的常量,在常量池
final String c = “cc”; // c 为局部变量的引用,在栈区,“cc”为未经 new 的常量,在常量池
}
}

17.已知x >= y and y >= z 为真,那么x > z or y = z 值为
在这里插入图片描述
解析:这题选c没有问题。首先要注意的是y=z是赋值,不是判断。 而后,x>=y>=z,当x=y=z的时候后面第一项x>z就不成立了,关键看第二项。当x=y=z=0,第二项为false,整个表达式为false。其他情况表达式是true。 但,我想提醒大家,选项d是没有问题的。
赋值结果为0,变成条件就是假的

5.对于循环队列 。
在这里插入图片描述
解析:可以腾出一个存储空间,用front=(rear+1)%m来约定队满
9.有B+Tree/Hash_Map/STL Map三种数据结构。对于内存中数据,查找性能较好的数据结构是(),对于磁盘中数据,查找性能较好的数据结构是()。
在这里插入图片描述
解析:Hash操作能根据散列值直接定位数据的存储地址,设计良好的hash表能在常数级时间下找到需要的数据,但是更适合于内存中的查找。
B+树是一种是一种树状的数据结构,适合做索引,对磁盘数据来说,索引查找是比较高效的
STL_Map的内部实现是一颗红黑树,但是只是一颗在内存中建立二叉树树,不能用于磁盘操作,而其内存查找性能也比不上Hash查找。
因此对于内存中数据,查找性能较好的数据结构是Hash_Map,对于磁盘中数据,查找性能较好的数据结构是B+Tree。

10.在n 个结点的无向图中,若边数大于n-1, 则该图必是连通图。( )
在这里插入图片描述
解析:在n个结点的无向图中,若该图是连通图,则其边数大于等于n-1,必要不充分条件
16.一个有n个结点的连通图的生成树是原图的最小连通子图,且包含原图中所有n个结点,并且有保持图联通的最少的边。最大生成树就是权和最大生成树,现在给出一个无向带权图的邻接矩阵,权为0表示没有边。
在这里插入图片描述
解析:在这里插入图片描述
18.假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()
在这里插入图片描述
解析:不管怎样线程对a的操作就是+1后-2
1.线程1执行完再线程2执行,1-2+1-2=-2
2.线程1和2同时+1,再-2不同时,1-2-2=-3
3.线程1和2不同时+1,同时-2,1+1-2=0
4.线程1和2既同时+1又同时-2,1-2=-1
没有结果为1的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值