Em mới học DSLK nên không hiểu một số chỗ : l.Head lưu địa chỉ của node đầu tiên, p->Next lưu địa chỉ của node đứng sau, vậy trong hàm Node *CreateNode(int x) và hàm void *AddHead(List &l, int x) bên dưới thì return p là trả về địa chỉ của ai vậy ạ ?
typedef struct Node
{
int Val;
struct Node *Next;
}Node;
typedef struct List
{
Node *Head;
Node *Tail;
}List;
void CreateList(List &l)
{
l.Head = l.Tail = NULL;
}
Node *CreateNode(int x)
{
Node *p = new Node;
if(p==NULL)
return 0;
p->Val = x;
p->Next = NULL;
return p;
}
void *AddHead(List &l, int x)
{
Node *p = CreateNode(x);
if(l.Head==NULL)
l.Head = l.Tail = p;
else
{
p->Next = l.Head;
l.Head = p;
}
return p;
}
void PrintList(List &l)
{
Node *p = l.Head;
while(p!=NULL)
{
printf("%d",p->Val);
p = p->Next;
}
}
void main()
{
List l;
AddHead(l,2);
AddHead(l,5);
AddHead(l,1);
AddHead(l,6);
AddHead(l,9);
AddHead(l,3);
PrintList(l);
getch();
}

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?