Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
kalifornianDog
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 37
1

Удаление из стека

17.07.2017, 13:36. Просмотров 499. Ответов 13
Метки нет (Все метки)

Доброго, я не понимаю, почему в методе Pop() происходит удаление значение из массива(стека) ведь return только возвращает данные, т.е только их отображает. Вот и вопрос, где я допустил ошибку?


C#
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
class Stack
    {
        char[] chor;
        int tor;
 
        public Stack(int size)
        {
            chor = new char[size];
            tor = 0;
        }
 
        public void Pomesti(char s)
        {
            if (tor == chor.Length)
            {
                Console.WriteLine("Стек Полон");
                return;
            }
            chor[tor] = s;
            tor++;
        }
 
        public char Pop()
        {
            if (tor == 0)
            {
                Console.WriteLine("Стек пуст");
                return (char) 0;
            }
            tor--;
            return chor[tor];
        }
 
public class Program
    {
        public static void Main(string[] args)
        {
            int i;
            char ch;
            Stack bop = new Stack(10);
            for (i = 0; !bop.full(); i++)
            {
                bop.Pomesti((char)('A' + i));
 
            }
            if (bop.full()) Console.WriteLine("Стек полон");
 
            while (!bop.pusto())
            {
                ch = bop.Pop();
                Console.WriteLine(ch);
            }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2017, 13:36
Ответы с готовыми решениями:

Создание стека и удаление наименьшего элемента
Ввести символы, формируя из них стек. Или заполнить рандомно. Удалить минимальный элемент из стека....

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

Удаление элементов из стека
Создать стек содержащий целые числа. Из стека удалить элементы каратные 5. Вывести стек....

Удаление элементов из стека
Здравствуйте. Посмотрите, пожалуйста мой код. Это не совсем обычная реализация стэка. И может быть...

Удаление элемента из стека
Здравствуйте! Объясните, каким образом можно удалить любой элемент в стеке? Пока что могу только...

13
OwenGlendower
Супер-модератор
Эксперт .NET
10227 / 8830 / 3777
Регистрация: 17.03.2014
Сообщений: 17,758
Записей в блоге: 1
17.07.2017, 13:52 2
kalifornianDog, подумай что делает строка
C#
1
tor--;
и как значение этой переменной связано с содержимым стека.
1
kalifornianDog
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 37
17.07.2017, 14:26  [ТС] 3
переменная tor - индекс вершины стека,
C#
1
 return chor[tor];
Вот про эту строку вопрос? Она просто возвращает мне элемент, который находится последним
0
OwenGlendower
Супер-модератор
Эксперт .NET
10227 / 8830 / 3777
Регистрация: 17.03.2014
Сообщений: 17,758
Записей в блоге: 1
17.07.2017, 14:27 4
kalifornianDog, вопрос про строку tor--;, а не про return. Продолжай думать.
1
kalifornianDog
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 37
17.07.2017, 14:50  [ТС] 5
Возможно, переменная
C#
1
tor
дает мне определенный доступ к стеку. Т.е только к последнему элементу стека. Но получается, что никак не удаляет содержимое стека. И получается, что сам стек не притерпел изменений?
0
kolorotur
Эксперт .NET
11106 / 9051 / 2282
Регистрация: 17.09.2011
Сообщений: 15,583
Завершенные тесты: 1
18.07.2017, 12:26 6
kalifornianDog, зайдем с другой стороны: зачем в методе Pop вообще нужна строка tor--;?
0
LeniumSoft
1438 / 828 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
Завершенные тесты: 1
18.07.2017, 12:58 7
Цитата Сообщение от kalifornianDog Посмотреть сообщение
я не понимаю, почему в методе Pop() происходит удаление значение из массива(стека) ведь return только возвращает данные
По всей видимости ты этот код сам не писал.

Но почему ты ждёшь от этого метода именно такого поведения?
Он написан и работает как должен.

Вот описание методов любого стэка: https://msdn.microsoft.com/ru-ru/lib....aspx#Anchor_4
0
MINO
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 124
Завершенные тесты: 1
18.07.2017, 14:08 8
не мучайте вы человека.
C#
1
2
tor--;
            return chor[tor];
заменить на

C#
1
            return chor[tor-1];
хотя про

C#
1
tor--;
надо бы почитать
0
kolorotur
Эксперт .NET
11106 / 9051 / 2282
Регистрация: 17.09.2011
Сообщений: 15,583
Завершенные тесты: 1
18.07.2017, 15:36 9
Цитата Сообщение от MINO Посмотреть сообщение
не мучайте вы человека.
Дай человеку рыбу — и он будет сыт один день.
Научи человека рыбачить — и он будет сыт всю жизнь.

Цитата Сообщение от MINO Посмотреть сообщение
tor--; return chor[tor]; заменить на return chor[tor-1];
И стек перестанет работать.
0
Wolfdp
872 / 780 / 204
Регистрация: 15.06.2012
Сообщений: 3,076
Записей в блоге: 1
Завершенные тесты: 1
18.07.2017, 16:16 10
у тебя есть n-єлементов в стеке. Тьі вначале понижаешь счетчик до 9, а потом возращаешь девятьій. А нужно по идеи наоборот. Про инкримент реально нужно почитать, его нужно применить в ретерне, а не перед.

Цитата Сообщение от kolorotur Посмотреть сообщение
Дай человеку рыбу — и он будет сыт один день.
Научи человека рыбачить — и он будет сыт всю жизнь.
Признайся -- мы просто не любим выдавать готовое, а предпочитаем "помучить".
1
kolorotur
18.07.2017, 16:59
  #11

Не по теме:

Цитата Сообщение от Wolfdp Посмотреть сообщение
мы просто не любим выдавать готовое, а предпочитаем "помучить".
Ну зачем же?
Если у человека возникают сложности с такими простыми вещами, то будет намного лучше, если он додумается до ответа сам — крепче запомнится. А мы поможем натолкнуть на правильную мысль.
"Мучим" и глумимся мы над лентяями, которые тупо вываливают текст задания на форум :D

0
MINO
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 124
Завершенные тесты: 1
24.07.2017, 22:40 12
Цитата Сообщение от kolorotur Посмотреть сообщение
И стек перестанет работать.
Да ту и стеком то не пахнет, скорее наоборот.
0
ahtik95
69 / 77 / 50
Регистрация: 29.09.2016
Сообщений: 194
Завершенные тесты: 10
25.07.2017, 02:44 13
Добавлено через 15 секунд
Ну здесь как бы не происходит никакого удаления элемента из стека, так-как это массив.
Ты просто по элементам массива пробегаешь с помощью переменной tor ,которая в роли индексов элементов от нуля до последнего и от последнего до нуля.
0
kolorotur
Эксперт .NET
11106 / 9051 / 2282
Регистрация: 17.09.2011
Сообщений: 15,583
Завершенные тесты: 1
25.07.2017, 10:20 14
Цитата Сообщение от MINO Посмотреть сообщение
Да ту и стеком то не пахнет, скорее наоборот.
Почему? Вполне себе стек: последний пришел, первый вышел.
0
25.07.2017, 10:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2017, 10:20

Удаление элементов из стека
Народ, помогите пожалуйста, срочно нужно. Требуется : Удалить элемент, который находится в...

Удаление элементов стека
Есть стек struct Stack { // Декларация структурного типа int info; Stack *...

Удаление элементов из стека
Задание: 10. В созданном списке определить количество элементов, имеющих значения, меньше среднего...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru