ở 2 dòng em đặt dấu chấm hỏi thì theo em hiểu p->pNext
và l.pTail->pNext
sẽ là một biến con trỏ và giá trị nó chứa sẽ là địa chỉ của node tiếp theo. Còn p là 1 con trỏ kiểu Node, tức là p sẽ trỏ đến ô gồm con trỏ pNext và giá trị của p. Vậy tại sao sau khi dùng p->pNext = l.pHead
và l.pTail->pNext=p
lại có nghĩa là p->pNext và l.pTail được gán là địa chỉ của l.pHead và p. Muốn một con trỏ chứa địa chỉ một ô nào đó ta phải dùng & chứ. Nhưng khi em dùng & thì chương trình lại báo lỗi. Hy vọng anh chị có thể giải đáp thắc mắc của em.
//Gan node vao dslk - AddNode vao dau dslk
void AddHead(List &l, Node *p) {
if (l.pHead == NULL)
l.pHead = l.pTail = p;
else {
p->pNext = l.pHead; //????
l.pHead = p;
}
}
//Gan node vao dslk - AddNode vao cuoi dslk
void AddTail(List &l, Node*p) {
if(l.pTail==NULL)
l.pHead = l.pTail = p;
else {
l.pTail->pNext=p; //?????
l.pTail = p;
}
}