2022.10.25-牛客-Java数组专项练习

2022.10.25-Java数组专项练习

1、向一个长度为n的向量的第i个元素(1 <= i <= n+1)之前插入一个元素时,需向后移动( B )个元素。

A. n-i
B. n-i+1
C. n-i-1
D. i

2、下面哪项是数组优于链表的特点?( D

A. 方便删除
B. 方便插入
C. 长度可变
D. 占用空间小

解析:
链表和数组的区别:
1、链表是链式存储结构,数组是顺序存储结构;
2、链表通过指针链接元素,而数组则是把所有元素按顺序进行存储;
3、链表插入和删除元素不需要移动元素,数组删除和增加元素需要移动元素。
ABC都是链表的特点,数组所需存储空间小于链表,所以正确答案选D。

3、在C++中,以下定义和初始化的两数组a1和a2,那么下列说法正确的是( D )。
char a1[] = “program”;
char a2[] = {‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’}

A. a1和a2完全相同
B. a1和a2不同,a1是指针
C. a1和a2存储单元的数目相同
D. a1和a2不同,a1的存储单元数目多

解析:
a1中存储的是字符串,因此在末尾存在字符’\0’;而a2中没有’\0’字符,所以sizeof(a1) = 8,sizeof(a2) = 7,a1的存储单元数目多

4、对于长度为n的线性表,建立其对应的单链表的时间复杂度为( C

A. O(1)
B.O(log2n)
C. O(n)
D. O(n^2)

解析:
无论采用什么方式(头插式或尾插式)创建单链表,都需要扫描这n个元素,边扫描边创建单链表中的结点并链接起来,其时间复杂度为O(n)。

5、设某数据结构的二元组形式表示为A = (D, R), D={01, 02, 03, 04, 05, 06, 07, 08, 09}, R={r}, r = {<01, 02>, <01, 03>, <01, 04>, <02, 05>, <02, 06>, <03, 07>, <03, 08>, <03, 09>}, 则数据结构A是( B )。

A. 线性结构
B. 树型结构
C. 物理结构
D. 图型结构

解析:
数据结构的二元组形式为:DS=(D,S)。其中 D是数据元素的集合;S是D中数据元素之间的关系集合,并且数据元素之间的关系是使用序偶来表示的。序偶是由两个元素x和y按一定顺序排列而成的二元组,记作<x,y>,x是它的第一元素,y是它的第二元素。
1.如果D!=null,而S==null,则该数据结构为集合结构。
2.如果 D= {01, 02, 03, 04, 05},S={<02, 04>, <03, 05>, <05, 02>, <01, 03>},则该数据结构是线性结构。
在这些数据元素中有一个可以被称为“第一个”的数据元素;还有一个可以被称为“最后一个”的数据元素;除第一个元素以外每个数据元素有且仅有一个直接前驱元素,除最后一个元素以外每个数据元素有且仅有一个直接后续元素。这种数据结构的特点是数据元素之间是 1对 1的联系,即线性关系。
3.D = {01, 02, 03, 04, 05, 06}, S = {<01, 02>, <01, 03>, <02, 04>, <02, 05>, <03, 06>}
除了一个数据元素(元素01) 以外每个数据元素有且仅有一个直接前驱元素,但是可以
有多个直接后续元素。这种数据结构的特点是数据元素之问是 1对 N 的联系,即树结构。
4.D = {01, 02, 03, 04, 05}, S= {<01,02>, <01,05>, <02,01>, <02,03>, <02,04>, <03,02>, <04,02>, <04,05>, <05,01>, <05,04>}:
每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素。这种数据结构的
特点是数据元素之间是M 对 N 的联系,即图结构。
显然,题目描述为情況3所述,是树结构,B选项正确。

6、执行以下代码段会输出什么结果( D )。

int a[3][] = {1, 2, 3, 4, 5, 6};
int *b = &a[0][0]; 
printf("%d",b[2]);

A. 1
B. 3
C. 4
D. 编译出错或其他都不对

解析:
Java数组必须指定行,C数组必须指定列。
代码段中定义数组a的方式错误,二维数组定义时不允许省略第二维的长度,无法编译通过。所以正确答案为D。

7、定义语句"double * array[8]"的含义正确的是( B )。

A. array是一个指针,它指向一个数组,数组的元素是双精度实型
B. array是一个数组,数组的每一个元素是指向双精度实型数据的指针
C. C语言中不允许这样的定义语句
D. 以上都不对

解析:
double *是数据类型,array是变量的名称,这个变量是一个大小为8的数组,array数组中存放的是double类型数据的地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值