与顺序队相比,链队()。
A.优点是可以实现无限长队列
B.优点是进队和出队时间性能更好
C.缺点是不能进行顺序访问
D.缺点是不能根据队首和队尾指针计算队的长度
D、缺点是不能根据队首和队尾指针计算队的长度
A.优点是可以实现无限长队列
B.优点是进队和出队时间性能更好
C.缺点是不能进行顺序访问
D.缺点是不能根据队首和队尾指针计算队的长度
D、缺点是不能根据队首和队尾指针计算队的长度
链栈与顺序栈相比,比较明显的优点是________
A.插入操作更加方便
B.删除操作更加方便
C.不会出现下溢的情况
D.不会出现上溢的情况
链栈与顺序栈相比,比较明显的优点是(44)。
A.插人操作更加方便
B.删除操作更加方便
C.不会出现下溢的情况
D.不会出现上溢的情况
用单链表表示的链式队列,队头在链表的()位置。
A.链头
B.链尾
C.链中
D.可以由自己确定
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
[说明]
链式存储的队列称为链队。根据队列的FIFO原则,为了操作上的方便,可以使用带头指针front和尾指针rear的单链表来实现链队。若链队元素的数据类型为datatype,则链队结构描述如下:
typedef struct node
{ datatypedata;
structnode *next;
} QNode; /*链队结点的类型*/
typedef struct
{ QNnode *front,*rear;
} LQueue; /*将头尾指针封装在一起的链队*/
以下这种链队的几个例子:
设q是一个指向链队的指针,即LQueue *q。下面各函数的功能说明如下:
(1) LQueue *Init_LQueue():创建并返回一个带头尾结点的空链队;
(2) intEmpty_LQueue(LQueue *q):判断链队q是否空;
(3) void In_LQueue(LQueue *q, datatypex):将数据x压入链队q;
(4) int Out_LQueue(LQuere *q, datatype *x):弹出链队q的第一个元素x,若成功则返回返回1否则返回0。
[函数]
LQueae *Init_LQueue()
{ LQueue *q, *p;
q=malloc(sizeof(LQueue)); /*申请链队指针*/
P=malloc(sized(QNode));/*申请头尾指针结点*/
p->next=NULL;
(1)=p;
return q;
}
int Empty_LQueue(LQueue *q)
{ if(q->front (2) q>rear) return 0;
else return 1;
}
void In_LQueue(LQueue *q, datatype x)
{ QNoda *p;
p=malloc(sizeof(QNnode));/*申请新接点*/
p->data=x;
p->next=NULL;
(3)=p;
q->rear=p;
}
int Out_LQueue(LQueue *q, datatype *x)
{ QNnode *p;
if(Empty_LQueue(q)) return 0; /*队空,操作失败*/
else{
p=q->front->next;
*x=(4);
(5)=p->next;
free(p);
if (q->front->next= =NULL)q->rear=q->front;
return 1;
}
}
设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=30,rear=10。现要在该循环队列中作顺序查找,最坏情况下需要比较的次数为()。
A.19
B.20
C.m-19
D.m-20
判定“带头结点的链队列为空”的条件是(56)。
A.Q.front==NULL
B.Q.rear==NULL
C.Q.front==Q.rear
D.Q.front!=Q.rear
A.Q.front==NULL
B.Q.rear==NULL
C.Q.front==Q.rear
D.Q.front!=Q.rear
● 下面关于栈和队列的叙述,错误的是 (60) 。
(60)
A. 栈和队列都是操作受限的线性表
B. 队列采用单循环链表存储时, 只需设置队尾指针就可使入队和出队操作的时间复杂度都为O(1)
C. 若队列的数据规模n可以确定,则采用顺序存储结构比链式存储结构效率更高
D. 利用两个栈可以模拟一个队列的操作,反之亦可
A.elemHead
B.elemTail
C.elemHead->next和elemHead
D.elemTail->next和elemTail