问题 单项选择题

下面关于栈和队列的叙述,错误的是()。

A.栈和队列都是操作受限的线性表

B.队列采用单循环链表存储时,只需设置队尾指针就可使入队和出队操作的 时间复杂度都为O(1)

C.若队列的数据规模n可以确定,则采用顺序存储结构比链式存储结构效率更高

D.利用两个栈可以模拟一个队列的操作,反之亦可

答案

参考答案:D

解析:

本题考查数据结构方面的基础知识。

栈和队列都是操作受限的线性表:栈仅在表尾插入和删除元素;队列仅在表头删除元素、在表尾插入元素。

采用单循环链表表示队列的示意图如下图所示:

 ①入队时,新元素在an之后,若新元素节点指针为s,则在一般情况下入队操作序列表示为s->next=rear->next;rear->next=s;rear=s;。

②出队时,将队头元素a,从队列中删除,一般情况下出队操作序列表示为:

q=rear->next;//q指向队头元素所在节点

rear->next=q->next;

free(q);

入队时初始队列为空、出队后队列变为空要进行特殊处理。

入队操作和出队操作均与队列长度无关,因此其时间复杂度都为O(1)。

队列是先入先出的线性表,栈是后进先出的线性表。一个线性序列经过队列结构后只能得到与原序列相同的元素序列,而经过一个栈结构后则可以得到多种元素序列。用两个栈可以模拟一个队列的入队和出队操作。

单项选择题
单项选择题