30/09/2018, 18:50
Các anh chị ơi giúp e bài Danh sách liên kết C++ với ạ e nhập vao được nhưng mà không in ra được ạ
#include<iostream>
using namespace std;
//b1 khai bao cau truc du lieu danh sach lien ket don.
//b2:khoi tao danh danh sach lien ket don.
//b3. Tao NODE trong danh sach.
//b4 them node(them dau hoac cuoi).(pNext luon chay tu head den tail.
//b5. nhap du lieu cho danh sach.
class NODE{
int data;
NODE *pNext;
public:
friend class List;
};
class List{
NODE *pHead;
NODE *pTail;
int n;
public:
List(){
pHead=pTail=NULL;
n=0;
}
void Init(List &l);//khoi tao mang du lieu b2
NODE * getNode(int x);//du lieu dua vao data. b3.
void AddHead(List &l,NODE *p);//them node vao dau danh sach.
void AddTail(List &l, NODE *p);
void InPut(List &l);
void OutPut(List l);
};
void List::Init(List &l){
l.pHead=l.pTail=NULL;
}
NODE* List:: getNode(int x){
NODE *p=new NODE;//cap phat 1 node.
if(p==NULL){
return NULL;
}
p->data=x;//luu x vao data.
p->pNext=NULL; //khoi tao moi lien ket.
return p;
}
void List::AddHead(List &l,NODE *p){
if(l.pHead==NULL ){//neu danh sach bi rong.
l.pHead=l.pTail=NULL;
}
else //neu danh sach khong rong.
{
p->pNext=l.pHead;// p quang day de tham gia vao danh sach
l.pHead=p; //p chinh thuc dung dau danh sach.
}
}
void List::AddTail(List &l,NODE *p){
if(l.pHead==NULL ){
l.pHead=l.pTail=NULL;
}
else //neu danh sach khong rong.
{
l.pTail->pNext=p;// l.pTail quang day tro toi P
l.pTail=p; //p chinh thuc dung dau danh sach.
}
}
void List::InPut(List &l){
cout<<"
nhap so phan tu: ";
cin>>n;
Init(l);//khoi tao danh sach.
for(int i=1;i<=n;i++){
int x;
cout<<"
nhap vao data: ";
cin>>x;
NODE *p=getNode(x);//dua data vao node p.
AddTail(l,p);
}
}
void List::OutPut(List l){
for(NODE *p=l.pHead; p !=NULL;p=p->pNext)
{
cout<<p ->data;
}
}
main(){
List l;
l.InPut(l);
l.OutPut(l);
}
Bài liên quan
Mình chưa code thử nhưng mình thấy có một số vấn đề.
trong hàm
void List::AddTail(List &l,NODE *p)
của bạn mình không hiểu chỗtại sao l.pHead=NULL lại gán lại nó một lần nữa?
Tiếp là cái hàm AdHead bạn viết nhưng ko dùng?
ban đầu khi danh sách của bạn chưa có gì tức i = 1 thì trong hàm addTail nó chỉ luôn thực hiện cái if đầu mà ko bao giờ thực hiện cái else cả do l.pHead luôn là null.
cảm ơn bạn rật nhiều