С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритмы поиска и сортировки в одномерных массивах символов http://www.cyberforum.ru/cpp-beginners/thread1876859.html
Помогите с заданием пожалуйста. Введенное предложение обработать так, чтобы его последовательность слов напечатать в обратном порядке.
C++ Определить, расположены ли элементы массива по убыванию значений В одномерном числовом массиве определить выставлены ли элементы по убыванию значений http://www.cyberforum.ru/cpp-beginners/thread1876858.html
В строке заменить каждый символ * числом, соответствующим номеру вхождения этого символа в строку C++
в заданной строке заменить каждый символ "*" числом, соответствующим номеру по порядку вхождения этого символа в строку #include <stdio.h> #include <string.h> #include <cstdlib> #include...
C++ Найти значение элемента массива модуль которого минимален
Всем доброе утро! Не могу привести мозги в тонус и понять, в чём ошибка. Есть такая задачка - вводится массив чисел. Количество их может быть какое угодно. Значение - unsigned int. Нужно...
C++ Задача разветвляющего типа http://www.cyberforum.ru/cpp-beginners/thread1876838.html
Написать программу выводящую корректную фразу. "Я собрал х грибов(гриба,гриб). Х - вводится с клавиатуры.
C++ задание-написать код со структурой по предложенному рисунку само задание: Для структуры данных, приведенной на рисунке, необходимо создать массив записей и определить клиента, который полностью рассчитался за строение. вот что у меня есть: #include... подробнее
John999
224 / 107 / 79
Регистрация: 17.10.2016
Сообщений: 312
13.12.2016, 15:33 0

Утечка памяти

13.12.2016, 15:33. Просмотров 224. Ответов 5
Метки (Все метки)

Ответ

У вас prefix_min это поле узла ?
Почему?
ведь минимум ищите во всём стэке.

Back напрашивается назвать Top
(вершина стэка)
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
112
113
114
#include <iostream>
#include <string>
using namespace std;
 
/* THE ELEMENT OF LIST */
struct LIFO {
    int value;
    // int prefix_min;
    LIFO *next;
};
 
void Push(LIFO *&, int, int & pref_min);    // Add the element at the top of the LIFO
int Pop(LIFO *&);           // DELETE and return the top of the LIFO
int Back(LIFO *);           // Return the top of the LIFO (not delete)
//int Min(LIFO *);            // Return the minimum of elements from the LIFO
void Clear(LIFO *&);        // Clear the LIFO
 
int main() {
    int iternum, number, Fsize = 0;
    string command;
 
    LIFO *Stack = NULL;
 
    int prefix_min = 1000000001;
 
    cin >> iternum;
    while (iternum-- > 0) {
        cin >> command;
        if (command == "push") {
            cin >> number;
            Push(Stack, number, prefix_min);
            Fsize++;
            cout << "ok\n";
        }
        else if (command == "pop") {
            if (Fsize) {
                cout << Pop(Stack) << endl;
                Fsize--;
            }
            else
                cout << "error\n";
        }
        else if (command == "back") {
            if (Fsize)
                cout << Back(Stack) << endl;
            else
                cout << "error\n";
        }
        else if (command == "min") {
            if (Fsize)
                cout << prefix_min << endl;
            else
                cout << "error\n";
        }
        else if (command == "size") {
            cout << Fsize << endl;
        }
        else if (command == "clear") {
            Clear(Stack);
                        Stack = NULL;
            Fsize = 0;
            cout << "ok\n";
        }
        else
            cout << "error\n";
    }
    Clear(Stack);
        Stack = NULL;
    return 0;
}
 
void Push(LIFO *&Stack, int x, int  &  pref_min)
{
    if (x < pref_min)
        pref_min = x;
 
    LIFO *Tmp = new LIFO;
    Tmp->value = x;
    Tmp->next = NULL;
 
    if(Stack == NULL)
    Stack = Tmp;
    else
    {
        Stack->next = Tmp;
        Tmp = Stack;
    }
}
 
int Pop(LIFO *&Stack) {
    int x = Stack->value;
    LIFO *Temp = Stack;
    Stack = Stack->next;
    delete Temp;
    return x;
}
 
int Back(LIFO *Stack) {
    return Stack->value;
}
 
//int Min(LIFO *Stack) {
//  return Stack->prefix_min;
//}
 
void Clear(LIFO *&Head) {
    LIFO * Curr = Head;
    while (Curr) {
        LIFO *Temp = Curr->next;
        delete Curr;
        Curr = Temp;
        
    }
}


Вернуться к обсуждению:
Утечка памяти
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2016, 15:33
Готовые ответы и решения:

Утечка памяти?
В Лафоре такой код: #include &lt;iostream&gt; using namespace std;...

утечка памяти
Может кто-то проверить есть ли здесь утечка памяти? Мне почему-то кажется что...

Утечка памяти?!
Джесс Либерти и Дэвид Хорват &quot;Освой самостоятельно С++ за 24 часа&quot;, вырезка из...

Утечка памяти
Не могу понять как избежать утечки памяти в своей программе... привожу кусок в...

Утечка памяти
Взял листинг кода из книги Стивен Прата Язык программирования С++. Меня...

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