Я делаю упражнение, это текст: Функция принимает в качестве ввода очередь Q, пустой стек S и целое число k и вставляет первые k элементов Q в S, так что элемент на фронте Q находится в верхней части S, а k-й элемент Q находится на дне S. Например, если Q = < 6,8,7,15,20,9 >, где 6 - элемент спереди, то после вызова вставки (Q, S, 4) имеем S = < 6,8,7,15>, где 6 - элемент сверху. Я не могу использовать какую-либо структуру данных. Это мое решение, но не работает должным образом, вставить элементы в неправильном порядке ...Вставить элементы очереди в стек java
public static void main(String[] args) {
Queue<String>Q=new ArrayQueue<String>();
Stack<String>S=new ArrayStack<String>();
Q.enqueue("Bob");
Q.enqueue("Tom");
Q.enqueue("Ann");
Q.enqueue("Bill");
Q.enqueue("David");
Q.enqueue("Mary");
Q.enqueue("Bob");
Q.enqueue("Jane");*/
for(int k=1;k<=9;k++){
insert(Q,S,k);
System.out.print("Dopo aver invocato insert con k="+k +", S = < ");
while(!S.isEmpty())
System.out.print(S.pop()+" ");
System.out.println(">");
}
}
public static <E>void insert(Queue<E> Q,Stack<E> S, int k){
int sizeOfQ=Q.size();
if(sizeOfQ<k)
return;
for(int i=0;i<k;i++){
E elt=Q.dequeue();
Q.enqueue(elt);
}
for(int i=0;i<sizeOfQ;i++){
E elt=Q.dequeue();
if(i>=sizeOfQ-k){
S.push(elt);
Q.enqueue(elt);
}else{
Q.enqueue(elt);
}
}
for(int i=0;i<sizeOfQ-k;i++){
Q.enqueue(Q.dequeue());
}
Не могли бы вы выделить пакет для очереди? Это не может быть java.util.Queue, так как нет метода детекции. – mauros
Да не из java util ... http: //pastebin.com/6dQpXd0p это ArrayQueue –
Импорт важен так же, как и код ... ваш ArrayQueue не компилируется ... и я могу также использовать ArrayStack ? – mauros