0 / 0 / 0
Регистрация: 02.03.2019
Сообщений: 55
1

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

07.09.2019, 20:25. Показов 388. Ответов 0
Метки нет (Все метки)

Есть задание, надо удалить мин.значение в стеки, но не трогать первый и последний элементы.
Сделал все, но не знаю как игнорировать первый и последний элемент, удаляется минимальный со всего стека(
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
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
#include <iostream>
#include <limits>
#include <conio.h>
using namespace std;
struct stack {
    int inf;
    stack *next;
};
stack* addElements(stack *begin);
void showStack(stack *begin);
void deleteStack(stack **begin);
int menu();
void input(int &a);
stack* deleteMinValue(stack *begin);
void deleteElem();
int main() {
    setlocale(0, "");
    stack *begin = NULL;
    while (true) {
        switch (menu())
        {
        case 1:
            cout << "Добавьте элемент:" << endl;
            begin = addElements(begin);
            cout << "Элемент добавлен" << endl;
            break;
        case 2:
            showStack(begin);
            break;
        case 3:
            deleteStack(&begin);
            break;
        case 4:
            begin = deleteMinValue(begin);
            break;
        case 5:
            begin = deleteElem();
            break;
        case 0:
            exit(0);
            break;
        default:
            cout << "Нет такого пунтка: ";
            break;
        }
    }
}
stack* addElements(stack *begin) {
    int inf;
    input(inf);
    stack *t = new stack;
    t->inf = inf;
    t->next = begin;
    return t;
}
void showStack(stack *begin) {
    cout << "--------------Stack--------------" << endl;
    stack *t = begin;
    while (t != NULL) {
        cout << "\t\t" << t->inf << endl;
        t = t->next;
    }
    cout << endl;
    system("pause");
}
void deleteStack(stack **begin) {
    while ((*begin) != NULL) {
        stack *t = *begin;
        (*begin) = (*begin)->next;
        delete t;
    }
    cout << "Очищен" << endl;
}
int menu() {
    system("cls");
    cout << "1 - Добавить элемент" << endl;
    cout << "2 - Показать элемент" << endl;
    cout << "3 - Очистить стек" << endl;
    cout << "4 - Удалить минимум" << endl;
    cout << "5 - Удалить элемент" << endl;
    cout << "0 - Выход" << endl;
    int choise;
    input(choise);
    return choise;
}
void input(int &a) {
    while (true)
    {
        cin >> a;
        if (cin.good()) {
            break;
        }
        cout << "Ошибка" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
}
stack* deleteMinValue(stack *begin) {
    stack *t = begin, *p = begin->next;
    for (; p; p = p->next)
        if (p->inf < t->inf)  t = p;
    p = begin;
    if (p != t) {
        while (p->next != t)   p = p->next;
        p->next = t->next;
    }
    else
        begin = t->next;
    delete t;
    return begin;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2019, 20:25
Ответы с готовыми решениями:

Инициализация, добавление и удаление элементов в СТЕКЕ
День добрый, нужна помощь со стеками. Передо мною стоит задача: 1) Инициализировать СТЕК через...

Удаление переменных в стеке
TPoint points; points = Point(30,0); points = Point(60,20); points = Point(30,40); ...

Не работает удаление в стеке
Доброго времени суток. Есть написанный код к задаче : Создать стек для символов. Максимальный...

PASCAL. Удаление элемента в стеке. ПРОГРАММА НЕ РАБОТАЕТ!!!
Здравствуйте ВАМ всем!!! :) Задание: Ввести символы, формируя из них стек. Вывести полученный...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2019, 20:25

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Инициализация, добавление и удаление элементов в СТЕКЕ через связный список
День добрый, нужна помощь со стеками. Передо мною стоит задача: 1) Инициализировать СТЕК через...

Если создать указатель на переменную, созданную в стеке, переменная перемещается в кучу? Или остается в стеке?
Подскажите, если не трудно, я создаю переменную любого стандартного типа и она хранится в стеке, а...

Группировка в стеке
Создан класс и динамическая структура данных типа стек, нужно определить среднюю стоимость...

Ошибка в стеке!
template&lt;typename T&gt; class Stack { private: struct Stek { T key; Stek* next; };

Вопрос о стеке
На сколько я знаю, подпрограмма которая выполняется рекурсивно, кидает в стек копию своих...

Вопрос о стеке в С++
Всем привет!! У меня тут вопрос про стек. Цитата из книги: Вектор здесь статический, может...


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

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

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