#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<<"\nnhap so phan tu: ";
cin>>n;
Init(l);//khoi tao danh sach.
for(int i=1;i<=n;i++){
int x;
cout<<"\nnhap 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);
}
Code danh sách liên kết C++ nhập vào được nhưng không in ra được
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ỗ
if(l.pHead==NULL ) {
l.pHead=l.pTail=NULL;
}
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.
2 Likes
cảm ơn bạn rật nhiều
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?