Стек будет отображать только первое значение?

0

Я пытаюсь сделать программу стека с динамически распределенным связанным списком, и я очень смущен всем этим. Во всяком случае, я создал собственную конструкцию стека, но отображает только первый элемент. Вот мой файл main.cpp:

// (Description in Word File)

#include "Prototypes.h"

unsigned seed = time(0);

int main()
{
    int random; // score between 30 and 95

    Stack stk; // stack of random scores

    srand(seed);

    // Populate that stack!
    for (int count = 0; count != 20; count++)
    {
        // generate a random number between 30 and 95
        random = (95 - (rand() % 65)) + 1;
        stk.push(random);

        // just to check for values
        //cout << stk.lst.getFirst() << endl;
    }

    // now display
    stk.lst.print();

    return 0;
}

Вот функции, используемые в файле:

int List::getFirst() const{
    return first->data;}

void List::addFirst(int value)
{
    Node* tmp = new Node(value);
    first = tmp;
}

void Stack::push(int value){
    lst.addFirst(value);}

void List::print() const
{
    Node* cur = first;

    cout << "\tValues:\n\n";

    for (int count = 1; cur != nullptr; count++)
    {
        cout << " " << cur->data;

        // print in rows of 5
        if ( (count % 5) == 0)
            cout << endl;

        // move down the list
        cur = cur->next;
    }

    cout << endl << endl;
}

Наконец, вот структуры, которые я использовал:

struct Node
{
    int data;
    Node* next;

    Node(int value) : data(value), next(nullptr){}
};

struct List
{
    Node* first; // a pointer to the first Node
    List() : first(nullptr){}

    void addFirst(int);

    int getFirst() const;

    bool removeFirst();

    void addLast(int);

    int getLast() const;

    bool removeLast(); 

    void print() const;
};

struct Stack
{
    List lst;

    void push(int);

    int pop();

    bool isEmpty() const;
};

Может кто-нибудь объяснить мне, почему отображается только одно значение? Пожалуйста, сделайте это простым, я новичок в программировании. Благодарю!

Теги:
linked-list
structure
stack
dynamic-memory-allocation

1 ответ

1
Лучший ответ
void List::addFirst(int value)
{ 
    Node* tmp = new Node(value);
    /* without the next line, you throw away the old first node. */
    tmp->next = first;
    first = tmp;
}
  • 0
    Спасибо! Это сработало!
  • 0
    Ага! Добро пожаловать в ТАК; здесь принято ставить галочку на ответе, который решает вашу проблему, чтобы указать людям, которые ищут похожие вопросы, что это правильно. Кроме того, я получаю репутацию за это = D.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню