Не добааляется первая строка в односвязный список

Есть уже сделанное задание.

Создать стек строковых значений, для реализации используя односвязные списки. Реализовать операции добавления (push) и удаления (pop) элемента из стека. Добавьте в стек строки «abc», «fx», «gle», «hi», «gogo>> и распечатайте содержимое стека. Удалите один элемент из стека, затем добавьте строку «the end» и распечатайте содержимое стека еще раз. Найдите количество строк в стеке, состоящих из 2 символов.

#include <iostream>
using namespace std;

struct Node
{
    Node* next;
    string data;
};
Node* head = nullptr;

void push(string data)
{
    if (head == nullptr)
    {
        head = new Node;
        head->next = nullptr;
        head->data = data;
    }
    else
    {
        Node* temp = new Node;
        temp->next = head;
        temp->data = data;
        head = temp;
    }
}
void pop()
{
    Node* temp = head;
    head = temp->next;
    delete temp;
}

void print_stack()
{
    Node* temp = head;
    while (temp->next != nullptr)
    {
        cout << temp->data << " ";
        temp = temp->next;
    }
    cout << endl;
}

int main()
{
    push("abc");
    push("fx");
    push("gle");
    push("hi");
    push("gogo");

    print_stack();

    pop();
    push("the end");

    print_stack();

    int count = 0;
    Node* temp = head;
    while (temp->next != nullptr)
    {
        if (temp->data.length() == 2)
        {
            count++;
        }
        temp = temp->next;
    }

    cout << "Number of lines in the stack consisting of 2 characters : " << count;
}

Вопрос почему при печати содержимого стека нету строки "abc", которую я добавляю первой.


Ответы (0 шт):