30/09/2018, 18:32
Bị stopped working làm danh sách liên kết đơn
em có suy nghĩ là thêm phân tử thí sinh p vào sau phần tử thí sinh q dựa vào mã số học sinh, nhưng lại bị lỗi này, anh chị hay pro nào giúp em ạ
#include"iostream"
#include"windows.h"
using namespace std;
class thisinh{
private:
char ht[30];
int ms;
int t,l,h;
public:
void nhapthisinh(thisinh &a);
void xuatthisinh(thisinh &a);
friend class node;
friend class list;
};
class node{
private:
node *pNext;
thisinh data;
friend class list;
};
class list{
private:
node *pHead,*pTail;
public:
void Init(list &l);
node* getnode(thisinh a);
void addTail(list &l, node *p);
void nhap(list &l);
void xuat(list l);
void thempt(list &l,node *p);
};
void thisinh::nhapthisinh(thisinh &a)
{
cout<<"
nhap ho ten thi sinh: ";
cin.ignore(1);
cin.get(a.ht,30);
cout<<"
nhap ma so sinh vien: ";
cin>>a.ms;
cout<<"
nhap lan luot diem 3 mon toan ly hoa: ";
cin>>a.t>>a.l>>a.h;
}
void list::Init(list &l)
{
l.pHead=l.pTail=NULL;
}
node* list::getnode(thisinh a)
{
node *p;
p=new node;
if(p==NULL)
{
return NULL;
}
else
{
p->data=a;
p->pNext=NULL;
return p;
}
}
void list::addTail(list &l, node *p)
{
int i;
if(l.pHead==NULL)
{
l.pHead=l.pTail=p;
}
else
{
l.pTail->pNext=p;
l.pTail=p;
}
}
void list::nhap(list &l)
{
node *p;
int n;
thisinh a;
cout<<"
nhap so phan tu: ";
cin>>n;
Init(l);
for(int i=1;i<=n;i++)
{
cout<<"
nhap thong tin hoc sinh thu "<<i;
a.nhapthisinh(a);
p=getnode(a);
addTail(l,p);
}
}
void list::xuat(list l)
{
int i=1;
thisinh a;
for(node *k=l.pHead;k;k=k->pNext)
{
cout<<"
thong tin hoc sinh thu :"<<i++;
cout<<"
ho ten: "<<k->data.ht;
cout<<"
ma so:"<<k->data.ms;
cout<<"
diem toan: "<<k->data.t;
cout<<"
diem ly: "<<k->data.l;
cout<<"
diem hoa: "<<k->data.h;
}
}
void list::thempt(list &l, node *p) ///them hoc sinh p vao sau hoc sinh q dua vao ma so
{
node *q;
cout<<"
nhap ma so thi sinh de them 1 hoc sinh nua vao sau no: ";
cin>>q->data.ms;
for(node *k=l.pHead;k!=NULL;k=k->pNext)
{
if(k->data.ms==q->data.ms)
{
node *g=k->pNext;
k->pNext=p;
p->pNext=g;
}
}
}
int main()
{
list l;
l.nhap(l);
thisinh p;
p.nhapthisinh(p);
node *P=l.getnode(p);
l.thempt(l,P);
cout<<"
day sau khi them pt la: ";
l.xuat(l);
}
Bài liên quan