Xuất danh sách liên kết đơn không hiện gì

Em chào mọi người ạ. Mọi người có thể giúp em fix lỗi này được không ạ?
Đề bài : Sử dụng danh sách liên kết đơn để nhập danh sách sinh viên với các thông tin (mã sv, tên, năm sinh) cho tới khi mã sv là xâu rỗng.

Dưới đây là bài code của em, em bị lỗi là khi xuất ra danh sách sinh viên (thông tin đã nhập) thì nó không hiện gì.

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

struct Sinhvien
{
    string masv;
    string ten;
    int nsinh;
    Sinhvien *next;
};

struct Danhsach
{
    Sinhvien *head;
    Sinhvien *tail;
};

void taods(Danhsach &l)
{
    l.head = NULL;
    l.tail = NULL;
}

Sinhvien *addsv(string code, string name, int dob)
{
    Sinhvien *p = new Sinhvien;
    p->masv = code;
    p->ten = name;
    p->nsinh = dob;
    p->next = NULL;
    return p;
}

void addtail(Danhsach &l, Sinhvien *p)
{
    if(l.head == NULL)
    {
        l.head = p;
        l.tail = p;
    }
    else
    {
        l.tail->next = p;
        l.tail = p;
    }
}

void addhead(Danhsach &l, Sinhvien *p)
{
    if(l.head == NULL) l.head = p;
    else
    {
        p->next = l.head;
        l.head = p;
    }
}

void nhap(Danhsach l)
{
    string masv;
    string ten;
    int dob;
    do
    {
        cout<<"Nhap MaSV: "; getline(cin, masv);
        if(masv.size() == 0 ) break;
        cout<<"Nhap ten: "; getline(cin, ten);
        cout<<"Nam sinh: "; cin>>dob; 
        cin.ignore();
        Sinhvien *p = addsv(masv, ten, dob);
        addtail(l,p);
    } while (masv.size() != 0);
}

void xuat(Danhsach l)
{
    for(Sinhvien *q = l.head; q!=NULL; q = q->next)
    {
        cout<<q->masv<<"\t"<<q->ten<<"\t"<<q->nsinh<<endl;
    }
}

void themsv(Danhsach l)
{
    string masv, ten;
    int dob;
    cout<<"\nCho SV can them vao dau DS:"<<endl;
    cout<<"MaSV: "; getline(cin, masv);
    cout<<"Ten: "; getline(cin, ten);
    cout<<"Nam sinh: "; cin>>dob;
    cin.ignore();
    Sinhvien *k = addsv(masv, ten, dob);
    addhead(l,k);
    cout<<"Hien thi danh sach:"<<endl;
    xuat(l);
}

int main()
{
    //tao ds rong
    Danhsach l;
    taods(l);

    //
    nhap(l);
    cout<<"Hien thi danh sach:"<<endl;
    xuat(l);
    themsv(l);
    return 0;
}

mình làm được rồi ạ, cảm ơn bạn nhiều

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?