Em chào mọi người ạ. Mọi người có thể giúp em lỗi nay được không ạ. Ở hàm ‘themsv’ em thêm 1 sinh viên vào cuối danh sách nhưng khi xuất ra nó không hiện gì ạ. Mong mọi người giải đáp giúp em ạ.
Đề bài : Dùng danh sách liên kết đơn để nhập thông tin sinh viên và xuất danh sách đã nhập. Thêm vào cuối danh sách thông tin 1 sinh viên.
#include <iostream>
using namespace std;
struct Sinhvien
{
int sbd;
string ten;
float diem;
Sinhvien *next;
};
struct Danhsach
{
Sinhvien *head;
Sinhvien *tail;
};
void createlist(Danhsach &l)
{
l.head = NULL;
l.tail = NULL;
}
Sinhvien *addsv(int number, string name, float score)
{
Sinhvien *p = new Sinhvien;
p->sbd = number;
p->ten = name;
p->diem = score;
p->next = NULL;
return p;
}
void addhead(Danhsach &l, Sinhvien *p)
{
if(l.head == NULL) l.head = p;
else
{
p->next = l.head;
l.head = 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 nhap(Danhsach &l, int n)
{
int sbd;
float diem;
string ten;
for(int i=0;i<n;i++)
{
cout<<"Nhap SBD: "; cin>>sbd;
cin.ignore();
cout<<"Nhap ten: "; getline(cin, ten);
cout<<"Diem: "; cin>>diem;
Sinhvien *p = addsv(sbd,ten,diem);
addhead(l,p);
}
}
void xuat(Danhsach l)
{
cout<<"Hien thi danh sach:"<<endl;
for(Sinhvien *q = l.head; q!=NULL; q = q->next)
{
cout<<q->sbd<<"\t"<<q->ten<<"\t"<<q->diem<<endl;
}
}
void themsv(Danhsach l)
{
int sbd;
string ten;
float diem;
cout<<"Cho SV can them vao cuoi DS:";
cout<<"\nSBD: "; cin>>sbd;
cin.ignore();
cout<<"Ten: "; getline(cin, ten);
cout<<"Diem: "; cin>>diem;
Sinhvien *k = addsv(sbd,ten,diem);
addtail(l,k);
xuat(l);
}
int main()
{
Danhsach l;
createlist(l);
int n;
do
{
cout<<"Cho n = "; cin>>n;
} while (n<=0);
nhap(l,n);
xuat(l);
themsv(l);
return 0;
}