码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构和算法-007 队列

时间:2015-06-11 07:06:55      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:数组   队列   java   

堆栈,另一个经典的数据结构。先进先出。

直接看代码吧,实现以下功能:

创建队列

插入值

取出值

值查看当前值

顺序插入

public class TheQueue {
    
    private String[] queueArray;
    
    private int queueSize;
    
    private int front, rear, numberOfItems =0;
    
    TheQueue(int size){
        
        queueSize = size;
        
        queueArray = new String[size];
        
        Arrays.fill(queueArray, "-1");
    }
    
    public void insert(String input){
        if(rear+1 < queueSize){    
            queueArray[rear]= input;
            rear++; numberOfItems++;
        }else System.out.println("The Queue is Full");
    }
    
    public String remove(){
        if(queueArray[front] != "-1"){
            System.out.println(queueArray[front]);
            queueArray[front] = "-1";
            front++; numberOfItems--;
            return queueArray[front];
        }
        System.out.println("Queue is Empty");
        return "-1";
    }
    
    public String peek(){
        if(queueArray[front] != "-1"){
            System.out.println(queueArray[front]);
            return queueArray[front];
        }
        System.out.println("Queue is Empty");
        return "-1";
    }
    
    public void priorityInsert(String input){
        if(numberOfItems == 0){
            insert (input);
        } else {
            if(rear+1 <queueSize){
                for(int i= rear; i>=front; i--){
                    if(Integer.parseInt(input) < Integer.parseInt(queueArray[i-1])){
                        queueArray[i]= queueArray[i-1];
                    
                    } else{
                        queueArray[i]= input;
                        rear++; numberOfItems++;
                        break;
                    }
                }
                
            } else System.out.println("Queus is Full");
        }
    }
    
    
    public void printQueue(){
        StringBuffer sb = new StringBuffer("-");
        for (int i = 0; i<queueSize; i++){
            sb.append("-----");
        }
        
        String septalLine= sb.toString();
        
        System.out.println(septalLine);
        for (int i = 0; i<queueSize; i++){
            System.out.print("|  " + i + " ");
        }
        System.out.println("|");
        System.out.println(septalLine);
        for (int i = 0; i<queueSize; i++){
            if(queueArray[i].equals("-1"))
                System.out.print("|    ");
            else
             System.out.print("| " + queueArray[i] + " ");
        }
        System.out.println("|");
        System.out.println(septalLine);
    }

    public static void main(String[] args) {
        System.out.println("Create a Stack");
        TheQueue queue = new TheQueue(10);
        queue.printQueue();
        System.out.println();
        
        System.out.println("Insert 2 values 10, 15");
        queue.insert("10");
        queue.insert("15");
        queue.printQueue();
        System.out.println();
        
        System.out.print("Remove the first value: ");
        queue.remove();
        queue.printQueue();
        System.out.println();
        
        System.out.print("Peek the current value: ");
        queue.peek();
        System.out.println();
        
        System.out.print("Remove the second value: ");
        queue.remove();
        queue.printQueue();
        System.out.println();
        
        System.out.print("Remove the third value: ");
        queue.remove();
        System.out.println();
        System.out.println();
        
        System.out.println("Insert Priority Value 11");
        queue.priorityInsert("11");
        queue.printQueue();
        System.out.println();
        
        System.out.println("Insert Priority Value 19");
        queue.priorityInsert("19");
        queue.printQueue();
        System.out.println();
        
        System.out.println("Insert Priority Value 16");
        queue.priorityInsert("16");
        queue.printQueue();
        System.out.println();
        
        System.out.println("Insert Priority Value 17");
        queue.priorityInsert("17");
        queue.printQueue();    
        System.out.println();
        
        System.out.print("Remove a value");
        queue.remove();
        queue.printQueue();
        System.out.println();
    }
}

输出结果

Create a Stack
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    |    |    |    |    |    |    |    |    |
---------------------------------------------------

Insert 2 values 10, 15
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
| 10 | 15 |    |    |    |    |    |    |    |    |
---------------------------------------------------

Remove the first value: 10
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    | 15 |    |    |    |    |    |    |    |    |
---------------------------------------------------

Peek the current value: 15
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    | 15 |    |    |    |    |    |    |    |    |
---------------------------------------------------

Remove the second value: 15
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    |    |    |    |    |    |    |    |    |
---------------------------------------------------

Remove the third value: Queue is Empty


Insert Priority Value 11
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    | 11 |    |    |    |    |    |    |    |
---------------------------------------------------

Insert Priority Value 19
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    | 11 | 19 |    |    |    |    |    |    |
---------------------------------------------------

Insert Priority Value 16
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    | 11 | 16 | 19 |    |    |    |    |    |
---------------------------------------------------

Insert Priority Value 17
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    | 11 | 16 | 17 | 19 |    |    |    |    |
---------------------------------------------------

Remove a value11
---------------------------------------------------
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |
---------------------------------------------------
|    |    |    | 16 | 17 | 19 |    |    |    |    |
---------------------------------------------------


本文出自 “10314466” 博客,请务必保留此出处http://10324466.blog.51cto.com/10314466/1660615

数据结构和算法-007 队列

标签:数组   队列   java   

原文地址:http://10324466.blog.51cto.com/10314466/1660615

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!