校招专项练习题
数组!!!!!!!!
A
n维数组中每个元素都可以看作是n-1维的线性表,一直递推到1维即为一维线性表
B
顺序存储和链式存储各有优点,不能说哪个优于哪个
栈是后进先出
队列是先进先出
A
顺序表的特点是逻辑上相邻的数据元素,其物理存储位置也相邻,并且顺序表的存储空间需要预先分配;
链式存储中逻辑上相邻的数据元素其物理存储位置不一定相邻,是因为链表通过指针实现元素间的逻辑关系;
顺序存储结构适合频繁的查询时使用,链式存储结构适合频繁的插入,删除和更新元素时使用
C
快速排序:关键节点前面的元素都比它小,后面的元素都比它大;
选择排序:从剩余元素后面找最小元素和当前元素交换;
插入排序:关键元素前面的元素已经排好序。
C
float一般为4个字节,以0做下标,计算第15个则不包括第15个,所以只有15个
15*4+200=260,
D
a1中存储的是字符串,因此在末尾存在字符’\0’;而a2中没有’\0’字符,所以sizeof(a1)=8,sizeof(a2)=7,a1存储单元数目多
C
题目已经告诉我们了A[1][1]的地址,只需要求题目要求的元素与A[1][1]之间有多少个元素就阔以了。 A[5][5]与A[1][1]之间有4*12+4=52个元素,而A[1][1]地址为420,那么A[5][5]的地址就为420+52=472
A
B
线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以 B 正确。所以有一个以上根结点的数据结构一定是非线性结构,所以 A 错误。循环链表和双向链表都是线性结构的数据结构。
C
数据最常用的操作就是查找和修改元素
C
两个栈的栈顶
一个在数组第一个元素,朝着数组索引增加方向增加
一个栈顶在数据最后一个元素,朝着数组索引减少方向增加
当两个栈的栈顶位置相差1时,数组被写满
B
三维数组:
长的边 个数:4-0+1=5
宽的 边 个数 :(-1)-(-3)+1=3
高的边个数 :7-5+1=3
总个数:533
B
表头可以为表或单元素值
表尾是指除去表头后剩下的元素组成的表(即使只剩一个元素也视为表),可以为空表
B
数组中的元素可以是字符等
矩阵中的只能是数
A
A.最大堆你可以想象成一颗二叉树,堆顶元素一定是最大值,然后它的每一棵子树也都是最大堆。优先队列的默认实现是最大堆,但是里面有个参数可以设置,设置之后就是最小堆。所以A是对的,最低优先级可以提取 B.数组和优先队列都不是有序的 C.有序数组是一种特殊的数组,里面的元素,按一定的顺序排列。有序数组可以直接提取最高优先级的元素
BCD
行为:
基本类型只是一个值,没有任何行为
对象类型有自己的行为
内存分配:
基本类型在栈内分配
对象在堆内分配
对象引用保存在栈内
引用与值:
基本类型是值类型,仅表示一个值,保存在栈内
引用类型分两部分,对象引用保存在栈内,对象保存在堆内,
访问变量,是使用的引用找对象
B:不是,属于引用数据类型,因为声明数组需要分配堆栈空间
D:大小一旦指定,不能改变
BD
定义二维数组时,不能省略第二维的大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:
设有数组int a[m][n],如果要访问a[i][j]的值,编译器的寻址方式为:
&a[i][j]=&a[0][0]+i*sizeof(int)n+jsizeof(int); //注意n为第二维的维数,