Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 26.11.2022
Сообщений: 54

Реализация стэка

19.07.2023, 18:17. Показов 607. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На примере задачи, где нужно ввести последовательность чисел, и вывести её в обратном порядке.
Решение на С++. Как реализовать стэк на джава?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
#include<stack>
using namespace std;
int main()
{
int n,a;stack<int>s;
cin>>n;
while(n){
n--;
cin>>a;
s.push(a);
}
while(!s.empty())
{cout<<s.top()<<' ';
 
s.pop();}
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2023, 18:17
Ответы с готовыми решениями:

Реализация стэка
Добрый вечер! Друзья, помогите с реализацией стэка, через указатель на связанный элемент. А конкретно с функцией создания. Чтобы можно было...

из стэка в label
Привет, подскажите пожалуйста: у меня есть стек ( или массив) с элементами. Как можно вывести эти данные в label одновременно, чтобы...

Вывод стэка
Заполнил контейнер, а вот с выводом не получается. В последнем цикле while должен происходить вывод контейнера #include &lt;iostream&gt; ...

15
Заблокирован
19.07.2023, 22:48
Java
1
2
3
4
5
6
7
8
9
        Scanner in = new Scanner(System.in);
        System.out.print("n=");
        int n=in.nextInt();
        Stack<Integer> s=new Stack<>();
        while(n-->0)
            s.push(in.nextInt());
        while(!s.isEmpty())
            System.out.println(s.pop());
        in.close();
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
19.07.2023, 23:08
Можно вообще без стека:
Java
1
2
3
4
5
6
7
8
9
10
11
import java.util.Scanner;
import java.util.stream.IntStream;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n;
        IntStream.generate(in::nextInt).limit(n = in.nextInt())
                .forEach(i -> System.out.printf("\r%s%d", " ".repeat(2 * (n - i)), i));
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Scanner;
import java.util.stream.IntStream;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println(IntStream.generate(in::nextInt).limit(in.nextInt())
                .collect(StringBuilder::new,
                        (StringBuilder sb, int i) -> sb.insert(0, i + " "),
                        (StringBuilder sb1, StringBuilder sb2) -> sb1.insert(0, sb2)));
    }
}
Если со стеком:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.ArrayDeque;
import java.util.Scanner;
import java.util.stream.Collector;
import java.util.stream.IntStream;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println(IntStream.generate(in::nextInt).limit(in.nextInt())
                .boxed().collect(Collector.of(
                        ArrayDeque::new,
                        (ArrayDeque<Integer> deq, Integer t) -> deq.addFirst(t),
                        (d1, d2) -> {
                            d2.addAll(d1);
                            return d2;
                        })));
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.ArrayDeque;
import java.util.Scanner;
import java.util.stream.IntStream;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        final var arr = IntStream.generate(in::nextInt).limit(in.nextInt()).toArray();
        final var deq = new ArrayDeque<Integer>();
        for (int i : arr) deq.addFirst(i);
        System.out.println(deq);
    }
}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.07.2023, 16:31
Чуваки, а где у вас таки
Цитата Сообщение от Bradley Посмотреть сообщение
Реализация стэка
???
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
20.07.2023, 16:38
iSmokeJC, ArrayDeque/LinkedList/Stack же.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.07.2023, 16:42
Arsegg, ну да, это все меняет. Вместо Stack взять Deque и сделать вид что реализовал...
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
20.07.2023, 16:43
iSmokeJC, ну камон:
Deques can also be used as LIFO (Last-In-First-Out) stacks. This interface should be used in preference to the legacy Stack class. When a deque is used as a stack, elements are pushed and popped from the beginning of the deque. Stack methods are precisely equivalent to Deque methods as indicated in the table below:
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.07.2023, 16:46
Arsegg, ты меня не понял. Вангую, нужно самому написать реализацию. А не подогнать существующие классы под работу стека. Это бессмысленно, если есть таки стек.

Добавлено через 34 секунды
Ну или очередь, не суть важно
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
20.07.2023, 16:50
iSmokeJC, у ТСа стандартная STL реализация стека.
Да и стек можно использовать неявно:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final var scanner = new Scanner(System.in);
final var n = scanner.nextInt();
 
 
void foo(int n) {
    if (n <= 0) {
        return;
    }
    final var x = scanner.nextInt();
    foo(n - 1);
    System.out.println(x);
}
 
 
foo(n);
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.07.2023, 16:54
Arsegg, да, это покрасивше, но все равно не то. Может тс и для красного словца про реализацию ляпнул? А ежели нужда тупо вывести числа в обратном порядке, то их действительно так же тупо можно собрать в стригбилдер и не париться
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
20.07.2023, 16:56
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Вангую, нужно самому написать реализацию.
Тут ключевой вопрос на чем? Никто, кроме ТСа, на этот вопрос не сможет ответить.
Стек можно на динамическом массиве реализовать (ArrayList/ArrayDeque), двусвязном списке (LinkedList), на двух очередях (лол).
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
20.07.2023, 16:57
Цитата Сообщение от iSmokeJC Посмотреть сообщение
сделать вид что реализовал
А т.е. include<stack> это реализация стека в cpp?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.lang.reflect.Array;
import java.util.Scanner;
import java.util.stream.IntStream;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        final var arr = IntStream.generate(in::nextInt).limit(in.nextInt()).toArray();
        final var stack = new Stack<Integer>();
        for (int i : arr) stack.push(i);
        while (stack.size() > 0) {
            System.out.print(stack.pop() + " ");
        }
    }
}
 
class Stack<T> {
    private int size;
    private T[] arr;
 
    public Stack() {
        this.size = 0;
        this.arr = (T[]) new Object[8];
    }
 
    public void push(T t) {
        if (arr.length == size + 1) {
            var arrNew = (T[]) Array.newInstance(arr.getClass().getComponentType(), arr.length * 2);
            System.arraycopy(arr, 0, arrNew, 0, size);
            arr = arrNew;
        }
        arr[size++] = t;
    }
 
    public T pop() {
        return arr[--size];
    }
 
    public int size() {
        return size;
    }
}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.07.2023, 17:00
Цитата Сообщение от Coffeini Посмотреть сообщение
А т.е. include<stack> это реализация стека в cpp?
Нет конечно! ТС просто нашел код, который выполняет задачу "вывести числа в обратном порядке", но на другом языке. А вот надо ли действительно мутить свой стек - это вопрос. Хотя иначе задача даже задачей не может считаться. "Пример использования стека" епт.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
20.07.2023, 17:06
Цитата Сообщение от Bradley Посмотреть сообщение
Как реализовать стэк на джава?
iSmokeJC, если придраться с реализации ТСа, то его стек реализован на двусторонней очереди:
... By default, if no container class is specified for a particular stack class instantiation, the standard container std::deque is used.
=> Нужно будет реализовать двустороннюю очередь Deque.

Добавлено через 2 минуты
Нифига, в Java такого нет)))
0
1 / 1 / 0
Регистрация: 26.11.2022
Сообщений: 54
30.07.2023, 19:15  [ТС]
Я неправильно выразился. Нужно было решить данную задачу, по выводу чисел в обратном порядке, на java. С использованием стека.

Добавлено через 5 часов 49 минут
mmi1814,
Цитата Сообщение от mmi1814 Посмотреть сообщение
Stack<Integer>
почему прописывается как Integer, а не int?
0
Заблокирован
31.07.2023, 08:27
не помню, привычка, в учебниках разъясняется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2023, 08:27
Помогаю со студенческими работами здесь

Ошибка стэка
синтаксическая ошибка: отсутствие &quot;;&quot; перед &quot;&lt;&quot;. Пишет когда пытаюсь откомпилить такую строчку Stack&lt;int&gt; ^stack = gcnew...

Формирование стэка
Разработать программу формирования стека, куда помещается последовательность символов, вводимых с клавиатуры. Процесс ввода символов должен...

Переполнение стэка
Всем здравствуйте, Ошибка такая: StackOverflowException: The requested operation caused a stack overflow. Смотрел на форумах способы...

Удаление стэка
Помогите =) Составить функцию, которая удаляет из списка второй элемент, если такой есть.

Размер стэка
Как узнать размер стэка? И сколько занято? Есть ли такие АПИ-функции?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru