知在结点个数大于1的单链表中,指针p指向某个结点,则下列程序段结束时,指针q指向*p的()结点。

判断题

2、多维数组是向量的推广 ( )
3、一般树和二叉树的结点数目都可以为0。 ( )
4、稀疏矩阵中0元素的分布有规律,因此可以采用三元组方法进行压缩存储。( )

5、已知在结点个数大于1的单链表中,指针p指向某个结点,则下列程序段结束时,指针q指向*p的()结点。
q=p;
while(q->next!=p)
q=q->next;
这个说是前驱,不理解

6、已知循环队列的存储空间为数组data[21],且头指针和尾指针分别为8和3,则该队列的当前长度()
这个为啥是mod22而不是21

7、已知一顺序存储的线性表,每个结点占用k个单元,若第一个结点的地址为DA1,则第i个结点的地址为(DA1+(i-1)*k)
这个咋还要i-1,

第一题:❌,多维数组和向量都是数学和计算机科学中的概念,但它们不是同一概念,也不是相互推广的关系。向量是一个有方向和大小的量,通常用于描述物理力学和几何学中的向量运算,如加法、减法、点积、叉积等。而多维数组是一种存储多个数据元素的数据结构,可以用来表示矩阵、表格、图像等复杂的数据结构。它们的概念、用途和应用场景都有所不同。

第二题: ✔,一般树和二叉树都可以为空树,即节点数为0。

第三题:✔,稀疏矩阵中0元素的分布通常是有规律的,这就使得采用三元组方法进行压缩存储是比较高效的。三元组存储方法将非零元素的行列坐标及其值存储在一个三元组中,而将矩阵中的0元素省略不存储,从而达到压缩存储的目的。

第四题:✔,因为在单链表中,结点只有指向下一个结点的指针,没有指向前驱结点的指针,所以需要用这种方式找到*p的前驱结点。

第五题:循环队列中,当尾指针和头指针相遇时,有两种情况:一种是队列为空,另一种是队列已满。因此,为了区分这两种情况,需要浪费一个数组元素的空间,即预留一个空位不用。因此,实际存储空间为数组data[20],而不是data[21]。同时,为了避免在计算队列长度时出现负数,需要在计算时对数组长度取模,即 (rear - front + 21) % 21 或 (rear - front + MAXSIZE) % MAXSIZE(其中 MAXSIZE=21)。因此,在这个问题中,长度的计算公式为 (rear - front + 21) % 21,而不是 % 22。

最后一题,不会!给个好友位姐妹!谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

参考GPT和自己的思路:

2、正确
3、正确
4、正确
5、指针q指向的是指针p所指向结点的前驱结点。所以q->next==p,即q是p的前驱结点。
6、因为队列的头尾指针相差的数据元素个数是不确定的,可能会超过队列长度,所以需要使用取模运算来保证正确的计算队列长度,即当前长度为(3-8+21) mod 21 = 16。
7、因为第一个结点的地址为DA1,第i个结点与第一个结点的地址差为(i-1)*k,所以第i个结点的地址为DA1+(i-1)*k。