码农的空间

codding
随笔 - 80, 文章 - 2, 评论 - 65, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

java实现队列

Posted on   我是孙海龙  阅读(3920)  评论(0编辑  收藏  举报

队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用,其实队列也是一种链表,它只允许在表的始端出表(dequeue),在表的末端入表(enqueue),下边是队列的java实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//队列是一种重要的数据结构,主要应用是资源的排队(例如打印机),需要注意的是要利用循环数据来存储数据
class Queue {
    private int front;
    private int back;
    private int size;
    private Object[] data;
     
    public Queue(){
        data=new Object[10];
    }
     
    public int getSize(){
        return size;
    }
     
    public Object dequeue(){
        Object o=null;
        if(size>0){
            size--;
            o=data[front];
            data[front]=null;
            front=(front>data.length-1)?0:front+1;
        }
        return o;
    }
     
    public void enqueue(Object o){
        if(size>=data.length){
            Object[] newData=new Object[data.length*2];
            for(int i=0;i<data.length;++i){
                newData[i]=data[i];
            }
            data=newData;
        }
        data[back]=o;
        back++;
        size++;
    }
     
    public String toString(){
        StringBuffer str=new StringBuffer();
        for(int i=0;i<data.length;i++){
            Object o=data[i];
            if(o!=null){
                str.append(o+" ");
            }          
        }
        return str.toString();
    }
}

测试方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args){
        Queue queue=new Queue();
        for(int i=0;i<15;i++){
            queue.enqueue("sunzhenxing"+i);
        }
        System.out.println(queue);
        System.out.println(queue.getSize());
        System.out.println("----------------------");
        for(int i=0;i<10;i++){
            queue.dequeue();
        }
        System.out.println(queue);
        System.out.println(queue.getSize());
        System.out.println("----------------------");
        for(int i=0;i<5;i++){
            queue.enqueue("sunhailong"+i);
        }
        System.out.println(queue);
        System.out.println(queue.getSize());
}

输出是:

sunzhenxing0 sunzhenxing1 sunzhenxing2 sunzhenxing3 sunzhenxing4 sunzhenxing5 sunzhenxing6 sunzhenxing7 sunzhenxing8 sunzhenxing9 sunzhenxing10 sunzhenxing11 sunzhenxing12 sunzhenxing13 sunzhenxing14
15
----------------------
sunzhenxing10 sunzhenxing11 sunzhenxing12 sunzhenxing13 sunzhenxing14
5
----------------------
sunzhenxing10 sunzhenxing11 sunzhenxing12 sunzhenxing13 sunzhenxing14 sunhailong0 sunhailong1 sunhailong2 sunhailong3 sunhailong4
10

努力加载评论中...
点击右上角即可分享
微信分享提示