1.队列
队列是限定在表的两端插入或删除的线性表。先进入队列的元素先删除,因此,其特点是先进先出。
(1)顺序队列
采用顺序结构。其应包括队首、尾指示器、队列起始地址、队列允许最大空间数。(1)进队操作:进队时队尾指针加1,再将新的元素按照队尾指示器所指地址插入。(2)出队操作:出队时对头指示器加1,再将队首指示器所指地址的元素取出。队列空的时候,出队会错误;队列溢出的时候,入队会错误。
(2)循环队列
当队尾指示器指向maxsize+1处时候,而队首指示器不为0,这种现象称为假溢出。消除假溢出的最好办法是采用循环队列。将队列看成首尾相接的循环结构。(1)如果需要将队尾和队首指示器从序号最大空间移动到最小序号空间,则只需要其加1取最大空间的模赋值给自身即可,即front = ( front + 1 ) % maxsize。(2)区分队满和对空时,①少用一个空间的时候,当队首下标=队尾下标=1时,队空;(队尾+1)%最大空间=队首,则队满②设置标志位
(3)链式队列
与单向链表相似,不同的是需要一个指针指向队尾。即在队尾增加一个结点,删除首结点。
(4)双端队列
其具有栈和队列的双重性质。元素可以从两端弹出,插入和删除也在两端进行。