循环队列存放在一维数组A[0.M-1]中,endl指向队头元素,end2指向队尾元素的后一个位置。假设队列两
A.队空:end1=end2; 队满:end1=(end2+1)mod M
B.队空:end1=end2; 队满:end2=(end1+1)modM-1)
C.队空:end2=(end1+1)modM; 队满:end4=(end2+1)modM
D.队空:end1=(end2+1)modM; 队满:end2=(endl+1)modM-1)
A.队空:end1=end2; 队满:end1=(end2+1)mod M
B.队空:end1=end2; 队满:end2=(end1+1)modM-1)
C.队空:end2=(end1+1)modM; 队满:end4=(end2+1)modM
D.队空:end1=(end2+1)modM; 队满:end2=(endl+1)modM-1)
A.Q[4]
B.Q[5]
C.Q[14]
D.Q[15]
A.(front-rear+1)%m
B.(rear-front+1)% m
C.(front-rear+m)% m
D.(rear-front+m)% m
A.(front-rear+1)%m
B.(rear-front+1)%m
C.(front-rear+m)%m
D.(rear-front+m)%m
A.0,0
B.0,n-1
C.n-1,0
D.n-1,n-1
已知循环队列存储在一维数组A[0 n]中,且队列非空时front和rear分别指向队首元素和队尾元素。若初始队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别时()。
A.0,0
B.0,n-1
C.n-1,0
D.n-1,n-1
A.5,1
B.4,2
C.2,4
D.1.5
在C语言中,(17)的一维数组来实现循环队列。
A.不能用动态分配
B.可以用动态分配
C.动态和静态分配相结合
D.以上都有可能
【习题3-2】设一维数组elem[maxSize]存放循环队列的元素,同时以rear和length分别指示循环队列中的队尾位置和队列中所含元素的个数。下面算法的功能是:插入(EnQueue)和删除(DeQueue)元素的操作。请在空白处填入正确的语句。//设该循环队列的结构定义为 #define maxSize 100 typedef int ElemType; typedef struct { //循环队列的结构定义 ElemType elem[maxSize]; //队列存储数组 int rear, length; //队列的队尾指针和队列长度。rear是实际的队尾位置。 } CircQueue; int EnQueue(CircQueue &Q, ElemType x) { //元素x存放到队列尾部。若进队列成功,函数返回true,否则返回false。 if(___________①_____________) return flase; //判队列是否不满,满则出错 Q.rear = __________②__________; //队尾指针进1 _________③__________; //进队列 _________④__________; //队列长度加1 return true; } int DeQueue(CircQueue &Q, ElemType &x) { //从队列队头退出元素由x返回。若退队列成功,函数返回true,否则返回false。 if(__________⑤__________) return false; //判断队列是否不空,空则出错 Q.length--; //队列长度减1 x = elem[(Q.rear - Q.length + 1 + maxSize) % maxSize]; //返回原队头元素值 return true; }
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!