Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554

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

05.10.2017, 13:16. Показов 6389. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать программу для работы со стеком переменной длины. Добавление, вывод на экран и удаление из стека элементов реализовать с помощью интерфейсов.
Продемонстрировать:
• наследование интерфейсов;
• использование методов интерфейса по умолчанию;
• использование ссылок на интерфейсы.
Вывод результата должен быть таким
Миниатюры
Реализация стека  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2017, 13:16
Ответы с готовыми решениями:

Реализация стека
Реализуйте стек с помощью LinkedList

Реализация стека целых чисел. Процедура добавления нового элемента, удаление, вывод стека
Попросили написать программку, но, паскаль очень давно не практикую, поэтому прошу тут: Надо написать программу реализации стека целых...

Реализация стека
Всем доброго времени суток! Нашел в на просторах интернета исходник реализации стека. Но не совсем понятен код. Что бы понять - я...

13
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
05.10.2017, 14:11
И? Наработки где?
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
05.10.2017, 15:35  [ТС]
JIeIIIa,
вот код:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package pbpp_4;
 
public interface IStack {
  void show();   
    int pick();
    int pop();
    void push(int a);  
}
 
package pbpp_4;
 
 
class Stack implements IStack
{
    private int size;
    private int []array;
    private int top;
    Stack(int s)
    {
        size =s;
        array = new int[size];
        top=-1;
    }
    public boolean isEmpty()
    {
        return (top==-1);
    }
 
    @Override
    public void push(int a)
    {
     int i =++top;
     array[i]=a;
     System.out.print(array[i]+" ");
   
        
    }
    @Override
    public int pop()
    {
        int i;
        if (isEmpty())
        {
            System.out.println("Стек пустой!");
            return 0;
        }
        else
        {
         System.out.println("Удаленный элемент из стека - "+top);        
      return array[top--];
            
            }
    }
    @Override
    public int pick()
    {
      if (isEmpty())
        {
            System.out.println("Стек пустой!");
            return 0;
        }
      else
        {
            System.out.print(top+" ");
            return array[top];
        }
    }
    public void Summa()
    {
        int Sum=0;
        for(int i=0;i<array.length;i++)
        {
           Sum+=array[i];
        }
        System.out.println("Сумма элементов стека = "+Sum);
    
    }
    
    @Override
    public void show()
    {
        if (isEmpty())
        {
            System.out.println("Стек пустой!");
        }
        else
        {
                for (int i=0;i<array.length;i++)
           System.out.print(array[i]+" ");
        }  
    }
 
  
 
}
package pbpp_4;
 
public class PBPP_4 {
 
   
    public static void main(String[] args)
    {
          Stack stack = new Stack(10);
           // Добавление элементов          
      System.out.println("Сформирован стек st1: ");
           stack.push(9);
          stack.push(8);
          stack.push(7);
          stack.push(6);
          stack.push(5);
         stack.push(4);
         stack.push(3);
         stack.push(2);
         stack.push(1);
         stack.push(0);
         System.out.println();
         stack.pop();
       stack.show();
         stack.Summa();
 
 
       
        
          
          
      
    }
    
}
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.10.2017, 16:04
посмотри, как ArrayDeque сделано,
Цитата Сообщение от vladis23 Посмотреть сообщение
System.out.print(top+" ");
вот это все безобразие надо бы убрать
Цитата Сообщение от vladis23 Посмотреть сообщение
return 0;
зачем ты возвращаешь 0, если там ничего нет?
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
05.10.2017, 19:23  [ТС]
xoraxax, Объясните как нормально реализовать стек, если не получается
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.10.2017, 20:17
Цитата Сообщение от xoraxax Посмотреть сообщение
посмотри, как ArrayDeque сделано,
...
0
 Аватар для FunProgrammer
6 / 6 / 4
Регистрация: 09.10.2016
Сообщений: 54
06.10.2017, 04:24
vladis23, писал от руки, так что возможны ошибки. Вот тебе пример переменной длины стека

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
    public void push(int item)
    {
   //Если стек заполнен, выделить память под стек большего размера
if(top==array.length-1){
int temp[]=new int[array.length*2];
for(int i=0;i<array.length;i++) temp[i]=array[i];
array=temp;
array[++top]=item;
}
else
array[++top]=item;
        
    }
0
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
07.10.2017, 22:38  [ТС]
FunProgrammer, а что все остальное у меня правильно?
0
 Аватар для FunProgrammer
6 / 6 / 4
Регистрация: 09.10.2016
Сообщений: 54
08.10.2017, 00:50
vladis23,
Нет, но я думаю другое не составит высокого труда тебе переделать самому
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
08.10.2017, 05:22
Лучший ответ Сообщение было отмечено vladis23 как решение

Решение

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import java.util.Arrays;
 
public class SimpleStack implements InStack<Integer> {
    private static final int DEFAULT_SIZE = 10;
    private static final String LS = System.lineSeparator();
    private final String nameStack;
    private StringBuilder sb = new StringBuilder();
 
    private Integer[] stackArray;
    private int size;
 
    SimpleStack(String nameStack) {
        this(null, nameStack);
    }
 
    SimpleStack(Integer[] values, String nameStack) {
        this.nameStack = nameStack;
        this.stackArray = new Integer[DEFAULT_SIZE];
        addAll(values);
        System.out.printf("Сформирован стек %s:%s%s%s", nameStack, LS, toString(), LS);
 
    }
 
    private void increaseLength() {
        if (this.size == this.stackArray.length) {
            this.stackArray = Arrays.copyOf(this.stackArray, this.stackArray.length * 3 >> 1 + 1);
        }
    }
 
    private void addAll(Integer[] values) {
        if (values != null && values.length > 0) {
            for (Integer value : values) {
                push(value);
            }
        }
    }
 
    @Override
    public boolean empty() {
        System.out.printf("Проверка стека %s на пустоту:%s%s%s", nameStack, LS, this.size == 0 ? "Стэк пустой" : "Стэк не пустой", LS);
        return this.size == 0;
    }
 
    @Override
    public Integer peek() {
        System.out.printf("Возвращаем верхний элемент из стека %s:%s%s%s", nameStack, LS, this.size == 0 ? "Стэк пустой" : this.stackArray[0], LS);
        return this.size != 0 ? this.stackArray[0] : null;
    }
 
    @Override
    public Integer pop() {
        Integer value = null;
        if (this.size != 0) {
            value = this.stackArray[0];
            this.stackArray[0] = null;
            System.arraycopy(this.stackArray, 1, this.stackArray, 0, this.stackArray.length - 1);
            this.size--;
        }
        System.out.printf("Стек %s после удаления элемента:%s%s%s", nameStack, LS, toString(), LS);
        return value;
    }
 
    @Override
    public Integer push(Integer value) {
        if (value != null) {
            increaseLength();
            System.arraycopy(this.stackArray, 0, this.stackArray, 1, this.stackArray.length - 1);
            this.stackArray[0] = value;
            this.size++;
        }
        System.out.printf("Стек %s после добавления элемента:%s%s%s", nameStack, LS, toString(), LS);
        return value;
    }
 
    @Override
    public String toString() {
        sb.delete(0, sb.length());
        if (this.size > 0) {
            for (int i = 0; i < this.size; i++) {
                sb.append(String.format("%s ", this.stackArray[i]));
            }
        } else {
            sb.append("В стеке нет элементов");
        }
        return sb.toString();
    }
 
    public Integer sumValues() {
        Integer result = 0;
        if (this.size != 0) {
            for (int i = 0; i < this.size; i++) {
                result += this.stackArray[i];
            }
        }
        System.out.printf("Сумма элементов стека %s равна:%s%s%s", nameStack, LS, result, LS);
        return result;
    }
}
 
interface InStack<E> {
    boolean empty();
    E peek();
    E pop();
    E push(E value);
}
1
 Аватар для vladis23
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
12.10.2017, 13:41  [ТС]
ArtemFM, а что в методе Main написать, я не могу понять?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
12.10.2017, 14:16
Integer array = {1, 2, 3, 4, 5, 6, 7};
SimpleStack stack = new SimpleStack(array, "st1");
а потом используешь методы

либо создаёшь пустой стек, только с именем
SimpleStack stack = new SimpleStack("st1");

Добавлено через 1 минуту
а потом уже
stack.peek()
stack.pop(); и т.д.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.10.2017, 14:22
зачем нужен
Цитата Сообщение от ArtemFM Посмотреть сообщение
"st1"
если он нигде не используется?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
12.10.2017, 14:24
xoraxax, он просил вот такой вывод:



там как раз присутствует имя стэка. А так там вообще в методах не должно быть вывода в консоль и не нужно и название. Но по картинке просят...вуаля, заворачивайте )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2017, 14:24
Помогаю со студенческими работами здесь

Реализация стека
Подскажите, как создать класс, который реализует стек? А также методы включения и выключения элементов?

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

Реализация стека
Здравствуйте! По заданию требуется реализовать двусвязный стек. Помогите пожалуйста дописать двусвязность. Уже несколько дней не могу...

Реализация стека
Не получается исправить ошибки #include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;conio.h&gt; #include &quot;stdafx.h&quot; #include...

Реализация стека
Написать программу, реализующую стек с информацией о сотрудниках и отображающую стек в порядке возрастания возраста сотрудника


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru