Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2014, 15:16   #1
Isildyr71
Новичок
Джуниор
 
Регистрация: 19.04.2014
Сообщений: 1
По умолчанию (java)Требуется решить задачу нахождения минимума на отрезке при помощи очереди на двух стеках. Помогите реализовать

Main ---
package laba4;
public class Laba4 {
public static void main(String[] args) {

Queue queue = new ArrayQueue(4);
assert queue.isEmpty();
queue.enqueue(8);
assert queue.getSize() == 1;
queue.enqueue(42);
assert queue.peek() == 8;
queue.dequeue();
assert queue.peek() == 42;
}

}
Интерфейс Queue
package laba4;

public interface Queue {
void enqueue(int a);
int peek();
void dequeue();
int getSize();
boolean isEmpty();
boolean isFull();
}

Интерфейс Stack

package laba4;
public interface Stack {
void push(int a);
int peek();
void pop();
int getSize();
boolean isEmpty();
boolean isFull();
}

Класс ArrayQueue
package laba4;

public class ArrayQueue implements Queue {
// размер массива
private final int capacity;
// индекс начала очереди в массиве
private int enqueuePointer;
// индекс конца очереди в массиве
private int dequeuePointer;
// а вот и сам массив
private final int[] data;
// конструктор очереди, принимает максимально
// возможное количество элементов
public ArrayQueue(int capacity) {
this.capacity = capacity;
this.data = new int[capacity];
}
// добавляет элемент в очередь
public void enqueue(int a) {
data[enqueuePointer] = a;
enqueuePointer = (enqueuePointer + 1) %
capacity;
}
// возвращает голову очереди
public int peek() {
return data[dequeuePointer];
}
// удаляет текущую голову очереди
public void dequeue() {
dequeuePointer = (dequeuePointer + 1) %
capacity;
}
// возвращает количество элементов в очереди
public int getSize() {
int size = (enqueuePointer - dequeuePointer) %
capacity;
if (size < 0) {
size += capacity;
}
return size;
}
// возвращает true, если очередь пустая
public boolean isEmpty() {
return getSize() == 0;
}
// возвращает true, если очередь заполнена
public boolean isFull() {
return getSize() == capacity;
}

}

Класс ArrayStack
package laba4;


public class ArrayStack implements Stack {
private final int capacity;
private int headPointer;
private final int[] data;
public ArrayStack(int capacity) {
this.capacity = capacity;
this.data = new int[capacity];
}
public void push(int a) {
data[headPointer] = a;
headPointer = (headPointer + 1) % capacity;
}
public int peek() {
return data[headPointer];

}
public void pop() {
headPointer = (headPointer + 1) % capacity;
}
public int getSize() {
int size = (headPointer +1) % capacity;
if (size < 0) {
size += capacity;
}
return size;
}
public boolean isEmpty() {
return getSize() == 0;
}
public boolean isFull() {
return getSize() == capacity;
}

}


Класс StackedQueue

package laba4;

public class StackedQueue implements Queue {
Stack s1= new ArrayStack(4);
Stack s2= new ArrayStack(4);
public void enqueue(int a) {
s1.push(a);
}
public int peek() {
if(s2.isEmpty()!=true)
s2.peek();
else
while(s1.isEmpty() == false){
s2.push(s1.peek());
s1.pop();
}
return s2.peek();
}
public void dequeue() {
if (s2.isEmpty()!=true)
s2.pop();
else{
while(s1.isEmpty()==false){
s2.push(s1.peek());
s1.pop();
}
s2.pop();
}

}
public int getSize() {
return s1.getSize()+s2.getSize();
}
public boolean isEmpty(){
return getSize()==0;
}

public boolean isFull() {
return s1.isFull() && s2.isFull();
}
}
Isildyr71 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа нахождения суммы,среднего арифметического,минимума функции vralayala Паскаль, Turbo Pascal, PascalABC.NET 0 28.05.2013 12:10
программа для нахождения минимума функции n переменных Delphi seka4 Помощь студентам 0 04.06.2012 20:39
решить уравнение lnx*lnx=k/x k-абциса точки минимума функции f(x)=2exp(x)-5x*x на отрезке от [0,4] (заплачу) xxxM9COPY6KAxxx Фриланс 30 06.02.2012 14:26
Помогите решить задачу при помощи классов Amen Помощь студентам 3 06.03.2009 08:20
Обращение к базам данных при помощи Java Script An_ton JavaScript, Ajax 5 24.09.2008 18:04