2015-01-25 2 views
0

Это типичная перестановка стека с помощью двух очередей, одна для ввода, а другая для вывода. Я хочу проверить, является ли q2 (вывод) правильной перестановкой q1 (ввод), но я не могу сравнивать выбор из первых двух очередей из-за их типа Object, поскольку оператор >= не будет работать на нем.Сравнение передних элементов очереди с помощью оператора> =

package a2; 
import a1queue.*; 
import a1stack.*; 

public class Permu { 

    public static int stperm(ArrayQueue q1,ArrayQueue q2) throws EmptyStackException, QueueFullException, EmptyQueueException, StackFullException{ 

    ArrayStack s = new ArrayStack(); 


    while(!q2.isEmpty()){ 
     while(!q1.isEmpty() && q2.front() >=q1.front()){// shows error here 

      if(q2.front() == q1.front()){ 
       System.out.println("enqueue(q2,dequeue(q1))-> "+ q1.front() + " is enqueued in q2."); 
       q1.dequeue(); 
       q2.dequeue(); 
             } 

      else { 
       System.out.println("push(s,dequeue(q1)) -> " + q1.front() + " is pushed into stack."); 
       s.push(q1.dequeue()); 

       } 


     } 
     if (q2.front() == s.top()){ 
      System.out.println("enqueue(q2, pop(s)) "+s.top() +" is popped from stack & enqueued in q2."); 
      s.pop(); 
      q2.dequeue(); 

     } 
     else{ 
      q1.enqueue(s.pop()); 
      System.out.println(s.top()); 
      break; 


      } 


    } 
    System.out.println("it is a permutation"); 
    return 0; 


} 



private static int compare(java.lang.Object front, java.lang.Object front2) { 
    // TODO Auto-generated method stub 
    return 0; 
} 



private static int Object(Object front) { 
    // TODO Auto-generated method stub 
    return 0; 
} 



public static void main(String[] args) throws QueueFullException,StackFullException,EmptyQueueException,EmptyStackException { 


    ArrayQueue q1 = new ArrayQueue(); 
    ArrayQueue q2 = new ArrayQueue(); 


    q1.enqueue(1); 
    q1.enqueue(2); 
    q1.enqueue(3); 
    q1.enqueue(4); 
    q1.enqueue(5); 
    q1.enqueue(6); 

    q2.enqueue(4); 
    q2.enqueue(5); 
    q2.enqueue(3); 
    q2.enqueue(2); 
    q2.enqueue(1); 
    q2.enqueue(6); 

    System.out.print(stperm(q1,q2)); 
} 
} 
+0

Почему бы не сделать очереди родовыми? Я вижу, что вы добавляете целые числа, поэтому Queue вернет целое число, которое вы можете сравнить. –

ответ

0

Необходимо создать свои объекты Comparable.

public class Obj implements Comparable<Obj> 
{ 
... 
} 

, а затем укажите атрибут сравнения. Что вы хотите сравнить с вашими объектами? На основании их идентификаторов? На основании их имен?

Обратите внимание, что вы не можете использовать операторов Java для сравнения. Вы должны вызвать метод compareTo(), который вы должны определить в объекте Comparable.

Смежные вопросы