◼ 方式 3: 增设 tag 数据成员以区分队满还是队空。
⚫ tag 表示 0 的情况下,若因删除导致 front == rear,则队空;
⚫ tag 等于 1 的情况,若因插入导致 front == rear 则队满
(5)循环队列的存储空间为 Q(1 : 50),初始状态为 front = rear = 50。
经过一系列正常的入队与退队操作后,front = rear = 25。此后又插入一个元素,则循环队列中的
元素个数为多少?
答案:1,或 50 且产生上溢错误。
(6)循环队列的存储空间为 Q(1 : 40),初始状态为 front = rear = 40。
经过一系列正常的入队与退队操作后,front = rear = 15,此后又退出一个元素,则循环队列中的元素
个数为多少?
答案:39,或 0 且产生下溢错误。
(7)设循环队列的存储空间为 Q(1 : 35),初始状态为 front = rear = 35。现经过一系列入队与退队
运算后,front = 15,rear = 15,则循环队列中的元素个数为多少?
答案:0 或 35。
(8)循环队列的存储空间为 Q(1 : 200),初始状态为 front = rear = 200。经过一系列正常的入队与
退队操作后,front = rear = 1 则循环队列中的元素个数为多少?
答案:0 或 200。
15. 给出一个由 n 个数组成的序列 A[1…n] ,要求找出它的最长单调上升子序列,设 m[i] ( 1 ≤ i
≤ n ),表示以 A[i] 结尾的最长单调上升子序列的长度,则 m[1] = 1 , m[i] ( 1 < i ≤ n )
为 m[i] = 1 + max{0,m[k](A[k] < A[i],1≤k < i )} 。
16. 一个栈的输入序列为 123……n,若输出序列的第一个元素是 n,输出第 i(1 <= i <= n)个元素是
n – i + 1 。
解:代入验证:当 i = 2 时,输出元素是(n - 1),符合公式(n - i + 1)。
17. 矩阵不仅是表示多维数组,而且是表示图的重要工具。(图的表示方法有邻接矩阵和邻接表。)
18. int (*p)[3]; 则 p 的含义是一个指向元素个数为 3 的 int 数组的指针。
19. 数组定义为“int a[4][5];”, 引用“*(a+1)+2”表示 a 数组第 1 行第 2 列元素的地址 (从
第 0 行开始)
解: a 是一个二级指针(行指针),指向数组第一行; a+1 后指向下一行;
*(a+1)后变成一个列指针,再 +2 仍为列指针。