Стэк не работает

286
03 мая 2017, 11:39

Хотелось бы вывести 4 3 2 1 0. Но ничего не выводит. Где я свернул не туда?

#include <iostream>
using namespace std;
struct number {
    int x;
    number *adr;
};
void add(number *,int);
void show(number *);
int main() {
    number *top = new number;
    top = NULL;
    for (int i = 0; i < 5; i++) {
        add(top, i);
    }
    show(top);
    system("pause");
}
void add(number *top, int x){
    number *temp = new number; 
    temp->adr = top;
    temp->x = x;
    top = temp;
}
void show(number *top) 
{
    number *temp = top; 
    while (temp != NULL) 
    {
        cout << temp->x << " "; 
        temp = temp->adr; 
    }
}
Answer 1

Функция add не модифицирует и не может модифицировать указатель top в функции main, ибо он передается в функцию add по значению. Указатель top в main навсегда остается равным null-указателю. Поэтому ничего и не выводится.

Либо передавайте top в add по ссылке, либо выработайте какой-то другой способ возвращения нового значения top из add в main.

Отдельно стоит заметить, что последовательность

number *top = new number;
top = NULL;

бессмысленна и только порождает утечку памяти. Зачем вам понадобился этот new?

READ ALSO
Ошибка в программе. Некорректный вывод

Ошибка в программе. Некорректный вывод

Помогите пожалуйстаФункция должна выводить слово(слова) минимальной длины

283
Объединение двумерных строк с помощью strcat в цикле

Объединение двумерных строк с помощью strcat в цикле

Почему strcat в цикле добавляет содержимое второго массива (аргумента) в первый несколько раз, как показано на картинке

276
Анализ загруженности кода

Анализ загруженности кода

Есть ли какие-нибудь инструменты для C++ на Windows, которые позволяют узнать, сколько раз программа выполнила какую-то строчку?

247
Масштабирование элементов QGraphicsItem

Масштабирование элементов QGraphicsItem

Пытаюсь создать графический редактор на QtДобавил на сцену графические элементы QGraphicsItem на сцену QGraphicsScene

522