Очередь. Функции

Как считать значения из файла и сделать очистку очереди, а то у меня обе функции получились лишь наполовину правильными.

#include <iostream>
#include <fstream>
using namespace std;

struct Node //описание узла списка
{
    double key = 0; //ключевое поле
    string data; //информационное поле
    Node* next = nullptr; //указатель на следующий элемент
};
struct Queue //описание очереди
{
    size_t size = 0; //счетчик размера очереди
    Node* first = nullptr; //указатель на начало очереди
    Node* last = nullptr; //указатель на конец очереди
};

bool IsEmpty(Queue* Q) //проверка очереди на пустоту
{
    return Q->first == nullptr;
}
bool Load(Queue* Q, string Name) // Работает корректно, когда число элементов fileLoad == числу элементов списка
{
    ifstream fin(Name);
    double key; string data;

    if (fin.is_open())
    {
        Q->first = Q->last = new Node;
        Q->last = Q->last->next;
        for (Node* currentStr = Q->first; currentStr; currentStr = currentStr->next)
        {
            fin >> key; fin >> data;
            currentStr->key = key;
            currentStr->data = data;
            Q->size++;
        }
    }
    fin.close();
    return true;
}
void Clear_Queue(Queue* Q) //удаление всех элементов очереди
{
    if (IsEmpty(Q)) return; // проверка на пустоту

    for (Node* currentStr = Q->first; currentStr; currentStr = currentStr->next)
    {
        Node* tmp = currentStr;
        delete tmp;
        Q->size--;
    }
}

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