2016-10-04 66 views

回答

0

爲了簡單起見,我只是要使用的對象的類型被存儲在隊列中

陣列基於

public class ArrayQueue { 

    private int size; 

    private Object[] objects; 

    public ArrayQueue(){ 
     size = 0; 
     objects = new Object[size]; 
    } 

    //Add object to end of queue 
    public void push(Object obj){ 
     size++; 
     Object[] newArr = new Object[size]; 
     for(int i = 0; i < objects.length; i++){ 
      newArr[i] = objects[i]; 
     } 
     newArr[newArr.length-1] = obj; 
     objects = newArr; 
    } 

    //Release first object in queue 
    public Object pop(){ 
     Object result = objects[0]; 
     size--; 
     Object[] newArr = new Object[size]; 
     for(int i = 1; i < objects.length; i++){ 
      newArr[i] = objects[i]; 
     } 
     objects = newArr; 
     return result; 
    } 



} 

聯的

public class LinkedQueue { 

    private int size; 

    private Node end; 

    public LinkedQueue(){ 
     size = 0; 
     end = null; 
    } 

    public void push(Object obj){ 
     size++; 
     end = new Node(obj,end); 
    } 

    public Object pop(){ 
     Node lastNode = null; // This just makes it easier to remove the last node; 
     Node currNode = end; 
     while(currNode.prev != null){ 
      lastNode = currNode; 
      currNode = currNode.prev; 
     } 
     if(size > 1){lastNode.prev = null;} 
     else{ end = null;} 

     size--; 
     return currNode.obj; 
    } 

} 

節點類

public class Node { 

    public Node prev; 

    public Object obj; 

    public Node(Object obj,Node prev){ 
     this.obj = obj; 
     this.prev = prev; 
    } 

} 

如果您對我爲什麼做了什麼,我做了什麼?