Односвязный список. Простые функции

Похожие темы просмотрел, но все же сомнения есть. Задача: написать реализации для обычных функций списков. Проверьте , пожалуйста, все ли правильно. Ибо это моя самая первая практика со списками. Заранее извиняюсь за глупые ошибки)

#include <iostream>
using namespace std;
struct Single_node {
    Single_node* next;
    int val;
    Single_node();

    Single_node(int i, Single_node* n = NULL) {
        val = i;
        next = n;
    };
};

class Single_list {

private:
    Single_node* head;
    Single_node* tail;
    int sz;
public:

    Single_list() {
        sz = 0;
        head = tail = NULL;
    };
    Single_list(int x) {
        Single_node(x,NULL);
    };
    ~Single_list(){
        Single_node* current = NULL;
        Single_node* next = head;
        while (next) {
            current = next;
            next = next->next;
            delete current;
        }
};

    void push_front(int b) {
        Single_node* newItem = new Single_node(b,head);

        if (!head) { tail = newItem; }
        head = newItem;
        sz++;
    };
    void pop_front() {
        Single_node* cur = head;
        head = head->next;
        sz--;
        delete cur;
    };
    bool empty() {
        if (sz == 0) {
            return true;
        }
    };
    int size() { return sz; };
    void clear();
    int& front();
    void print()
    {
        Single_node* p = head;
        while (p) {
            cout << p->val;
            p = p->next;
        }
        cout << endl;
    }
};


int main()
{
    Single_list a;
    a.push_front(1122211);
    a.push_front(1222111);
    a.push_front(111221);
    a.push_front(22222);
    a.pop_front();
    a.empty();
    a.size();
    a.pop_front();
}

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