Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Di3go
Аноним
5 / 5 / 4
Регистрация: 15.12.2013
Сообщений: 149
Завершенные тесты: 2
1

Удаление элемента стека не работает

28.04.2015, 16:10. Просмотров 903. Ответов 2
Метки нет (Все метки)

Здравствуйте, у меня проблема с обработкой стека. Нужно ввести в стек числа и из полученного стека удалить отрицательные элементы. Вроде всё сделал, но вот в процессе работы возникает ошибка(скриншот прилагается).

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
struct chain
{
    int num;
    chain *next;
};
chain * push(chain*, int);
chain * pop(chain*);
void printstack(chain*);
void Process(chain*);
int _tmain(int argc, _TCHAR* argv[])
{
    int quentity, number;
    chain* top = NULL;
    cout << "Enter the number of stacks: ";
    cin >> quentity;
    for (int i = 0; i < quentity; i++)
    {
        cout << "[" << i + 1 << "]: ";
        cin >> number;
        top = push(top, number);
    }
    cout << "The stack before processing: ";
    printstack(top);
    Process(top);
    cout << "The stack after processing: ";
    printstack(top);
    _getch();
    return 0;
}
 
chain * push(chain* top, int what)
{
    chain * pv = new chain;
    pv->num = what;
    pv->next = top;
    return pv;
}
chain * pop(chain * top)
{
    chain * pv = top->next;
    delete top;
    return pv;
}
void printstack(chain* top)
{
    while (top)
    {
        cout << top->num << " ";
        top = top->next;
    }
    cout << endl;
}
void Process(chain * top)
{
    while (top)
    {
        if ((top->num) < 0)   /// тут ошибка
            pop(top);
        top = top->next;
    }
}
0
Миниатюры
Удаление элемента стека не работает  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2015, 16:10
Ответы с готовыми решениями:

Удаление элемента стека
Здравствуйте! Столкнулся с проблемой удаления элемента стека по определённому...

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

Удаление элемента стека
Всем привет, решал лабу по стекам и столкнулся с одной проблемой, не могу...

Стеки и удаление конкретного элемента из стека
Здравствуйте, уважаемые программисты и начинающие как я. Помогите, пожалуйста с...

Удаление последнего введенного элемента из списка (стека)
Напишите пожалуйста программу для удаления последнего введенного элемента из...

2
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
28.04.2015, 16:53 2
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
int main()
{
    /* ... */
    top = Process(top);
    /* ... */
}
 
chain* Process(chain* stack)
{
    chain* top = NULL;
    chain* next = NULL;
    
    while(stack && stack->num < 0)
        stack = pop(stack);
    
    if(!stack)
        return NULL;
    
    top = stack;
    next = top->next;
    
    while(next)
    {
        if(next->num < 0)
        {
            next = pop(next);
            stack->next = next;
        }
        else
        {
            stack = next;
            next = stack->next;
        }
    }
    return top;
}
1
Di3go
Аноним
5 / 5 / 4
Регистрация: 15.12.2013
Сообщений: 149
Завершенные тесты: 2
28.04.2015, 19:01  [ТС] 3
retmas, спасибо) выручил
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2015, 19:01

Функция remove: удаление всех включений элемента x из стека
реализуйте функцию remove которая удаляет все включения элемента x из стека

В программе не работает 1)удаление элемента, последнего в списке-зависает и
В программе не работает 1)удаление элемента, последнего в списке-зависает и...

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
Добавить в класс &quot;Односвязный список&quot; следующие функции: вставка элемента в...


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

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

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