Использование логического значения влево / вправо в двух стеках - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть задание в школе.Это включает создание массива двух стеков с использованием логического значения true / false, чтобы получить доступ вправо / влево в стеках.

Я вроде зеленый, используя стеки на всех!И не знаете, как реализовать этот логический s * t

Любые советы?Незаконченный фрагмент кода ниже: ...

/**
 * Stacks of top-element of given stack and return it.
 * @param right true if right stable, false if left stable
 * @throws TwostackEmptyException if stable is empty
 */
@Override
public Object pop(Boolean right) throws TwostackEmptyException {
    return null;
}

/**
 *  Return top element of given stack, but doesnt remove it.
 *  @param right true if right, false if left
 *  @throws TwostackEmptyException if stacks empty.
 */
@Override
public Object peek(Boolean right) throws TwostackEmptyException {
    return null;
}

1 Ответ

0 голосов
/ 01 февраля 2019

Давайте использовать базовую форму создания массива из двух стеков;взять обычный массив и «разделить» его пополам.

Если ваш массив имеет максимальный размер N, то «левая» часть массива растягивается от «array [0]» до «array [n / 2»] "(знак на полпути.)

" Правая "сторона будет от" array [n / 2] "до" array [n-1] "(конец).

Так, например, если мы хотим поместить игрушечную машинку в левую часть нашего массива «ToyCollection», то есть размер 10?Затем мы можем поместить его в «ToyCollection [0-4]», первую половину.Мы помещаем только фигурки в слоты "ToyCollection [5-9]".

Обратите внимание, что мы не буквально разбиваем массив пополам, но мы говорим себе, что мы выиграли 't помещать определенные элементы в определенные слоты.

Так как же работать с логическими переменными в этом?Хорошо для моего приведенного выше примера, допустим, что у нас есть логическое значение, которое говорит "WantToyCars".Если это bool True, то нам нужен только доступ к левой стороне массива.

Так что давайте вернем разделение этого.Есть несколько способов разделения массивов, но я просто собираюсь использовать встроенную функцию «copyOfRange», которая есть во всех массивах.Какой-то псевдокод для иллюстрации идеи;

public Toy[] getCars(Toy[] ToyCollection, boolean WantToyCars) {
     if (WantToyCars) {
        Toy[] ToyCars = Arrays.copyOfRange(ToyCollection, 1, (ToyCollection.length / 2));
        return ToyCars;
     }
}

Если это соответствует структуре вашего задания, то я думаю, что сработает.

...