数组 A[0…5 , 0…6] 的每个元素占 5 个字节,将其按列优先次序存储在起始地址为 1000 的内存单元中,则元素 A[5 , 5] 的地址为()
解答:
按照列优先次序存储,计算公式: (行长度 * (所在列 - 1) + 所在行 - 1) * 单元长度 + 起始地址
即 (6*(6-1)+6-1)*5+1000==1175
A[5,5]在第六行第六列,可以先算6*6*5==180
这是A[5,5]的终止地址,而它的起始地址就是减去它自身所占的字节,即180-5==175
若二维数组 a 有 m 列,则计算任一元素 a[i][j]
在数组中的位置公式为( )。
(假设 a[0][0
] 位于数组的第一个位置上)
首先需要注意的是:位置和下标的区别,下标从0开始,位置从1开始
答案:i*m+j+1
线性表的链式存储结构既方便其存取操作,也方便其插入与删除操作,这种说法()
线性表的链式存储结构便于插入和删除,但不利于存取。线性表的顺序存储结构存取方便,但插入和删除都需要移动大量元素。
下面哪项是数组优于链表的特点?
A方便删除
B方便插入
C长度可变
D占用空间小
数组内存空间比链表少,链表要保存指向下一个结点的指针,数组支持随机访问
需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 。
静态链表:定义一个较大的结构数组作为备用结点空间(即存储池)。
静态链表通常使用数组来实现,每个节点包含数据元素以及一个指向下一个节点的下标,而不是直接使用指针。数组中,下标为 0 的元素通常被用作备用链表的头结点,备用链表中的元素用来存储删除的节点,空闲的节点用于插入新的节点。
静态链表的插入和删除操作是通过修改相应节点的指针实现的,不需要移动被删除或插入位置之后的元素,因此插入和删除操作的时间复杂度是 O(1)。但是,静态链表在空间利用率方面不如链式存储结构,因为静态链表需要使用额外的数组空间来存储节点的指针。
关于链表,以下说法正确的是 ( )
A需经常修改线性表L中的结点值适合采用链式结构
B需不断对线性表L进行删除插入适合采用链式结构
C带头结点的单链表,在表的第一个元素之前插入一个新元素与链表长度无关
解答:
A:经常需要修改线性表结点的值最好使用数组
C:单链表在第一个元素前加元素,只需要改变头结点的后驱结点和原第一个元素的前驱结点就可以。