Не добааляется первая строка в односвязный список
Есть уже сделанное задание.
Создать стек строковых значений, для реализации используя односвязные списки. Реализовать операции добавления (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", которую я добавляю первой.