2013-02-22 2 views
2

내 대기열 클래스를 작성하려고합니다. 내 대기열에 넣는 방법은 하나의 객체를 대기열에 넣은 다음 다른 대기열에 넣으려고하면 그 대기열을 무시하는 것과 같습니다. 여기 내 코드입니다 :대기열 구현, 대기열 넣기 메소드가 작동하지 않습니다.

public class myQueue { 

    private Node front; 
    private Node back; 
    private int s; 

    public myQueue() { 
      front = null; 
      back = null; 
      s = 0; 
    } 

    public void enqueue(Object x) { 
     if(isEmpty()) 
      back = front = new Node(x); 
     else 
      back = back.next = new Node(x); 
     s++; 
    } 

    public Object dequeue() { 
     Object x; 
     if(isEmpty()) { System.out.println("nothing to dequeue.\nqueue empty."); } 
     x = front.data; 
     s--; 
     return x; 
    } 

    public boolean isEmpty() { 
     if(s == 0) 
      return true; 
     else 
      return false; 
    } 

    public void printQueue() { 
     if (isEmpty()) 
      System.out.println("empty queue"); 
     else { 
      Node temp = back; 
      while(temp != null) { 
       System.out.println(temp); 
       temp = temp.next; 
      } 
     } 
    } 



} 

여기에 내가 일부 개체 대기열하려고 어디에 내 주요 방법 :

public static void main(String[] args) { 
    int a = 5; 
    String b = "yo"; 
    Object c = 5.5;     
    int d = 2; 
    String e = "Pen"; 
    Object f = 9.2; 

    myQueue q = new myQueue(); 

    q.enqueue(a); 
    q.enqueue(b); 
    q.enqueue(c); 
    q.enqueue(d); 
    q.enqueue(e); 
    q.enqueue(f); 

    System.out.println("\n"); 

    q.printQueue(); 
} 

하고 난 출력을 얻을 모든은 다음과 같습니다

데이터를 : 9.2

왜 이런 일이 발생했는지에 대한 아이디어가 있습니까? 대기열의 뒤쪽에서 시작하는 경우

 Node temp = front; // <<< replacing back by front 
     while(temp != null) { 
      System.out.println(temp); 
      temp = temp.next; 
     } 

, 당신 만의 마지막 요소가됩니다 : 당신이 인쇄 할 때, 당신은 큐의 뒤에 시작

답변

2

, 당신은 전면에서 시작한다 큐는

내 결과 수정과 함께 ... 인쇄 될 : 너무 명백한 것 같다

data : 5 
data : yo 
data : 5.5 
data : 2 
data : Pen 
data : 9.2 
+0

아, 감사합니다. 어떤 이유에서든 필자는 필자의 수첩에 그려진 것을 앞에서 뒤쪽으로 연결시켜 주었기 때문에 뒤에서부터 인쇄해야한다고 생각했다. 고맙습니다! – Ted