您的位置:首页 > 理论基础 > 数据结构算法

数据结构和算法-007 队列

2015-06-10 22:34 666 查看
队列,另一个经典的数据结构。先进先出。
直接看代码吧,实现以下功能:
创建队列
插入值
取出值
值查看当前值
顺序插入
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 |    |    |    |    |
---------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组 Java 队列