|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2014, 15:16 | #1 |
Новичок
Джуниор
Регистрация: 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(); } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа нахождения суммы,среднего арифметического,минимума функции | 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 |