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
0