首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

行列

2013-01-20 
队列队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入

队列
队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。–队尾(rear)——允许插入的一端–队头(front)——允许删除的一端队列特点:先进先出(FIFO)
队列的结构如下图所示:
行列
线性表的操作主要包括:

1清空队列

(2)判断是否为空

3)元素的个数

4)入队列

5)出队列

(6)取对头元素

接口由此,对队列的抽象数据类型定义Queue接口如下:

?存在问题

设数组长度为M,则:

–当front=0,rear=M时,再有元素入队发生溢出——真溢出 –当front!=0,rear=M时,再有元素入队发生溢出——假溢出?解决方案–队首固定,每次出队剩余元素向下移动——浪费时间–循环队列?基本思想:把队列设想成环形,让sq[0]接在sq[M-1]之后,若rear+1==M,则令rear=0;行列
源代码

设队首、队尾指针front和rear,front指向头结点,rear指向队尾


行列

源代码
package queue;public class Test {/** * 测试队列 * 测试结果:各项功能正确无误 * @param args */public static void main(String[] args) {//Queue queue = new LinkQueue();Queue queue = new ArrayQueue();for(int i=0; i<10; i++) {queue.push(i);}System.out.println(queue);Object obj1 = queue.deQueue();Object obj2 = queue.deQueue();System.out.println("count:" + queue.size() + "  obj1:" + obj1 + "  obj2:" + obj2);System.out.println(queue);System.out.println("peek:" + queue.peek());//System.out.println(test.toString());for(int i=0; i<12; i++) {queue.push(i+10);}}}
结果[0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  ]
count:8  obj1:0  obj2:1
[2,  3,  4,  5,  6,  7,  8,  9,  ]
peek:2

热点排行