Создание очереди из 5 структур

Создать структуру, которая хранит имя человека и его номер телефона. Создать очередь из 5-ти структур и вывести результат. Помним, что в очереди кто первым записался, тот первым и обслуживается. Пытался сделать так, не приняли.

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

struct perk
{
string name;
long double phone;
};

int main()
{
const int s = 5;
perk per[5]; 

for (int i = 0; i < 5; i++)
{
    cout << "What's ur name? " << "U r " << i + 1 << " pers ";
    cin >> per[i].name;
    cout << '\n';
    cout << "Welcome, " << per[i].name << '\n';
    cout << '\n';
    cout << per[i].name << ", What's ur phone? ";
    cin >> per[i].phone;
    cout << '\n';
    cout << "Thx for giving ur num, " << per[i].name << " (ur num is " << per[i].phone << ')' << '\n';
    cout << '\n';
}
}

Прошу не кидаться помидорами, только начал учить c++ и мало, что знаю. Буду признателен, если поможете)


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

Автор решения: acvel
#include <iostream>

using namespace std;

template <typename Smth>
class queue {
    template <typename Smth>
    struct node {
        node<Smth>* next;
        Smth data;
        node(Smth data) {
            this->data = data;
            next = NULL;
        }
    };

    node<Smth>* head;
    node<Smth>* tail;
    int size;
public:
    queue() {
        head = tail = NULL;
        size = 0;
    }
    ~queue() {
        while (head) {
            tail = head->next;
            delete head;
            head = tail;
        }

    }

    void push(Smth data) {
        node<Smth>* temp = new node<Smth>(data);

        if (size == 0) {
            head = tail = temp;
        }
        else {
            tail->next = temp;
            tail = temp;
        }
        size++;
    }

    void pop() {
        node<Smth>* temp = head;
        head = head->next;
        delete temp;
        size--;
    }

    Smth front() {
        return head->data;
    }

    Smth back() {
        return tail->data;
    }

    bool empty() {
        return (size == 0) ? true : false;
    }
};

struct perk
{
    string name;
    long double phone;
};

int main() {
    queue<perk*> q;
    for (int i = 0; i < 5; i++) {
        perk* per = new perk;
        cout << "What's ur name? " << "U r " << i + 1 << " pers ";
        cin >> per->name;
        cout << '\n';
        cout << "Welcome, " << per->name << '\n';
        cout << '\n';
        cout << per->name << ", What's ur phone? ";
        cin >> per->phone;
        cout << '\n';
        cout << "Thx for giving ur num, " << per->name << " (ur num is " << per->phone << ')' << '\n';
        cout << '\n';
        q.push(per);
    }
    for (int i = 0; i < 5; i++) {
        perk* p = q.front();
        q.pop();
        delete p;
    }
}
→ Ссылка