30/09/2018, 18:31
Các anh chị giúp em về sửa lỗi sai code danh sách liên kết đơn
em đang mò mẫm code thì không hiểu sao không chạy được chương trình , nó báo lỗi dòng số 34 . nghĩ mãi không ra nên anh chị giúp em với ạ (nhập xuất phân số thì em đã chạy được rồi, nhưng đến phần xóa 1 phần tử cuói thì lại không đc !!)
#include"iostream"
using namespace std;
class phanso{
private:
int ts,ms;
public:
void nhapphanso(phanso &a);
void xuatphanso(phanso &a);
};
class node{
private:
phanso data;
node *pNext;
friend class list;
};
class list{
private:
node *pTail,*pHead;
public:
void Init(list &l);
node* getnode(phanso x);
void addTail(list &l,node *p);
void addHead(list &l,node *p);
void nhap(list &l);
void xuat(list l);
void xoacuoi(list &l);
};
void list::xoacuoi(list &l)
{
node *p;
for(node *k=l.pHead;k!=NULL;k=k->pNext)
{
if(k->data==l.pTail->data)
{
l.pTail=p;
l.pTail->pNext=NULL;
delete k;
return ;
}
p=k;
}
}
void phanso::nhapphanso(phanso &a)
{
cout<<"
nhap tu so va mau so : ";
cin>>a.ts>>a.ms;
}
void phanso::xuatphanso(phanso &a)
{
cout<<a.ts<<"/"<<a.ms<<"
";
}
void list::Init(list &l)
{
l.pTail=l.pHead=NULL;
}
node* list::getnode(phanso x)
{
node *p;
p=new node;
if(p==NULL)
{
return NULL;
}
else
{
p->data=x;
p->pNext=NULL;
return p;
}
}
void list::addTail(list &l, node *p)
{
if(l.pHead==NULL)
l.pTail=l.pHead=p;
else
{
l.pTail->pNext=p;
l.pTail=p;
}
}
void list::nhap(list &l)
{
node *p;
int n;
phanso x;
cout<<"
nhap so phan tu: ";
cin>>n;
Init(l);
for(int i=1;i<=n;i++)
{
x.nhapphanso(x);
p=getnode(x);
addTail(l,p);
}
}
void list::xuat(list l)
{
phanso x;
for(node *p=l.pHead;p!=NULL;p=p->pNext)
{
x.xuatphanso(p->data);
}
}
int main()
{
list l;
l.nhap(l);
l.xuat(l);
}
Bài liên quan
@Pham_Van_Hai @Gio 2 anh hôm gì giúp em với
Mình thấy xóa cuối thì chỉ cần tìm phần tử kế cuối rồi trỏ next =NULL sau đó xóa cuối là được.
Bạn không thể so sánh hai đối tượng trực tiếp như này trừ khi bạn viết lại toán tử
==
cho lớp phân số.Việc xóa phần tử cuối cùng bạn không càn duyệt đến phần tử cuối cùng, chỉ cần duyệt đến phần tử trước đó thôi:
em xin cám ơn 2 anh ạ