- Back to Home »
- Cplusplus »
- [C++]Danh sách sinh viên dùng danh sách liên kết
Đề bài: Dùng danh sách liên kết làm những việc sau:
- Quản lý danh sách sinh viên. Nhập họ, tên, địa chỉ, tuổi và in ra màn hình.
- Chèn thêm một sinh viên vào vị trí thứ 2.
Bài làm:
#include<iostream>
using namespace std;
struct dssv
{
string ho,ten,diachi;
int tuoi;
dssv *next;
};
struct list
{
dssv *phead;
dssv *ptail;
};
void init(list &l)
{
l.phead=NULL;
}
dssv *get_node()
{
dssv *p;
p=new dssv;
if(p==NULL)
{
cout <<"Loi !";
}
else
{
cout <<"Nhap ho: "; cin.ignore(1); getline(cin,p->ho);
cout <<"Nhap ten: "; getline(cin,p->ten);
cout <<"Nhap dia chi: "; getline(cin,p->diachi);
cout <<"Nhap tuoi : "; cin >> p->tuoi;
p->next=NULL;
}
return p;
}
void chendau (list &l,dssv *p)
{
if (l.phead==NULL)
{
l.phead=p;
l.ptail=p;
}
else
{
p->next=l.phead;
l.phead =p;
}
}
void nhap_sv(list &l)
{
int n;
dssv *p;
cout <<"Nhap so sinh vien: ";
cin >> n;
for (int i=0;i<n;i++)
{
cout <<"Nhap sinh vien thu "<<i+1 <<": "<<endl;
p=get_node();
chendau(l,p);
}
}
void inra(list &l)
{
dssv *p;
p=l.phead;
while (p!=NULL)
{
cout <<p->ho<<" " <<p->ten <<" "<<p->diachi <<" "<<p->tuoi <<endl;
p=p->next;
}
}
void chensau(list &l,dssv *q,int n)
{
dssv *p;
p=get_node();
//if(p=NULL)exit(1);
if(q!=NULL)
{
p->next=q->next;
q->next=p;
if(q==l.ptail) l.ptail=p;
}else chendau(l,p);
}
void themmotso(list &l)
{
dssv *p;
int n;
int i=0;
p=l.phead;
while (i!=0)
{
i++;
p=p->next;
}
chensau(l,p,n);
}
int main()
{
list l;
init (l);
nhap_sv(l);
cout <<"Danh sach sinh vien la: "<<endl;
inra(l);
cout<<"Chen 1 sinh vien vao vi tri thu 2: "<<endl;
themmotso(l);
inra (l);
}