Очередь. Функции
Как считать значения из файла и сделать очистку очереди, а то у меня обе функции получились лишь наполовину правильными.
#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--;
}
}