栈和队列都是操作受限的线性表:栈仅在表尾插入和删除元素;队列仅在表头删除元素、在表尾插入元素。
采用单循环链表表示队列的示意图如下图所示:
①入队时,新元素在an之后,若新元素节点指针为s,则在一般情况下入队操作序列表示为s->next=rear->next;rear->next=s;rear=s;。
②出队时,将队头元素a,从队列中删除,一般情况下出队操作序列表示为:
q=rear->next;//q指向队头元素所在节点
rear->next=q->next;
free(q);
入队时初始队列为空、出队后队列变为空要进行特殊处理。
入队操作和出队操作均与队列长度无关,因此其时间复杂度都为O(1)。
队列是先入先出的线性表,栈是后进先出的线性表。一个线性序列经过队列结构后只能得到与原序列相同的元素序列,而经过一个栈结构后则可以得到多种元素序列。用两个栈可以模拟一个队列的入队和出队操作。