01/10/2018, 11:40
Thắc mắc về danh sách liên kết đơn?
Chào các anh/chị, anh/chị cho em hỏi là em muốn thêm 1 phần tử(Node) vào cuối danh sách và 1 phần tử vào đầu danh sách liên kết thì newNode->link=l.First
thì link
ở đây là link
của newNode
hay link
của l.First
vậy ạ? Tương tự với thêm phần tử newNode
vào cuối danh sách l.Last->link=newNode;
thì link
ở đây là link
của l.Last
hay link
của newNode
Em cám ơn!
#include <stdio.h>
// Hàm khai báo dữ liệu 1 phần tử trong DSLK
struct Node
{
int data;
Node *link;
};
//Hàm khai báo một DSLK có phần tử đầu là First và phần tử cuối là Last
typedef struct List
{
Node *First,*Last;
};
//----------------------------
// Hàm khởi tạo giá trị cho phần tử đầu và cuối của danh sách
void Init(List &l)
{
l.First=l.Last=NULL;
}
//----------------------------
// Hàm tạo 1 Node trong DSLK
Node *getNode(int x)
{
//Node *p;
//p=new Node;
Node *p=new Node;
if(p==NULL)
return NULL;
p->data=x;
p->link=NULL;
return p;
}
//----------------------------
// Hàm thêm 1 phần tử vào đầu danh sách
void addFirst(List &l,Node *newNode)
{
if(l.First==NULL) //ds rong
l.First=l.Last=newNode;
else //ds khong rong
{
newNode->link=l.First;
l.First=newNode;
}
}
//Hàm thên 1 phần tử cào cuối danh sách
void addLast(List &l,Node *newNode)
{
if(l.First==NULL) //ds rong
l.First=l.Last=newNode;
else //ds khong rong
{
l.Last->link=newNode;
l.Last=newNode;
}
}
Bài liên quan
newNode->link=l.First thì link ở đây là link của newNode hay link của l.First vậy ạ?
Trả lời: là link của newNode
l.Last->link=newNode; thì link ở đây là link của l.Last hay link của newNode?
Trả lời: là link của l.Last
Chào pcnhatvu!
Theo code của bạn thì List là các phần tử chứa con trỏ và các con trỏ trỏ tới phần tử đầu và cuối của danh sách.
Bạn phải phân biệt được phần tử đầu danh sách(Node*) và phần tử trỏ tới phần tử đầu danh sách( List.First) và tương tự với thằng cuối danh sách. Rồi dùng giấy vẽ ra thì bạn sẽ hiểu!
Chúc bạn thành công!