Создайте один стек с 10 целочисленными элементами, а затем добавьте один элемент с функцией - PullRequest
0 голосов
/ 19 июня 2019

Я создал стек из 10 элементов:

    Stack<Integer> stackA = new Stack<>();
    stackA.push(1);
    stackA.push(2);
    stackA.push(3);
    stackA.push(4);
    stackA.push(5);
    stackA.push(6);
    stackA.push(7);
    stackA.push(8);
    stackA.push(9);
    stackA.push(10);

Теперь мне нужно написать метод, который с помощью вспомогательного стека B добавляет элемент в конец стека A в качестве аргумента.

Так что, если мой стек: 1,2,3,4,5,6,7,8,9,10 после метода add_on_beggining(0) стек должен выглядеть 0,1,2,3,4,5,6,7,8,9,10

Кроме того, я пытаюсь решить эту проблему только с помощью peek, push и pop.

Ответы [ 4 ]

0 голосов
/ 19 июня 2019
import java.util.ArrayList;

import java.util.List;

import java.util.Stack;

открытый класс Main {

public static void main(String[] args) {

    Stack<Integer> stackA = new Stack<>();

    stackA.push(1);
    stackA.push(2);
    stackA.push(3);
    stackA.push(4);
    stackA.push(5);
    stackA.push(6);
    stackA.push(7);
    stackA.push(8);
    stackA.push(9);
    stackA.push(10);

    List<Integer> temp = new ArrayList<>();

    int elementToAdd = 100;

    //Add first
    temp.add(elementToAdd);

    for (Integer el : stackA) {
        temp.add(el);
    }

    stackA.clear();

    stackA.addAll(temp);

    System.out.println(stackA);


}

}

0 голосов
/ 19 июня 2019

Если это не домашнее задание, и вы не вынуждены использовать самореализуемый класс, используйте LinkedList.Он реализует Deque, который является как стеком, так и очередью.С его помощью вы можете добавлять элементы на обоих концах, используя методы, предоставляемые стеком (push, pop, peek ...).

Deque: https://docs.oracle.com/javase/7/docs/api/java/util/Deque.html

0 голосов
/ 19 июня 2019

пример реализации:

import java.util.Stack;

class Scratch {
    public static void main(String[] args) {
        CustomStack<Integer> stackA = new CustomStack<>();
        stackA.push(1);
        stackA.push(2);
        stackA.push(3);
        stackA.push(4);
        stackA.push(5);
        stackA.push(6);
        stackA.push(7);
        stackA.push(8);
        stackA.push(9);
        stackA.push(10);

        Stack<Integer> stackB = stackA.addOnBeginning(0);
        System.out.println(stackB);
    }
}


class CustomStack<E> extends Stack<E> {
    CustomStack addOnBeginning(E value) {
        CustomStack<E> stack = new CustomStack<>();
        stack.push(value);
        stack.addAll(this);
        return stack;
    }
}

Выход: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Вы можете изменить имена классов / переменных. Обратите внимание, что вам не нужно возвращать CustomStack из addOnBeginning, а также создавать new CustomStack<>();.

Или просто используйте Deque, как указано выше.

0 голосов
/ 19 июня 2019

вы можете получить размер стека, вставить их в цикл for и сохранить их в массиве.Затем нажмите 0 (начало) и элементы массива по порядку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...