问题
单项选择题
下面关于栈和队列的叙述,错误的是()。
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)。
队列是先入先出的线性表,栈是后进先出的线性表。一个线性序列经过队列结构后只能得到与原序列相同的元素序列,而经过一个栈结构后则可以得到多种元素序列。用两个栈可以模拟一个队列的入队和出队操作。