Em chưa hiểu bản chất của câu lệnh khai báo danh sách liên kết đơn

bạn giải thích cái phần else = hình vẽ cho mình cái mình k hiểu 2 dòng đó

void themcuoi(LIST &l,NODE *p)
{
	if(l.dau=NULL) l.dau=l.cuoi=p;
	else 
	{
		l.cuoi->next=p;
		l.cuoi=p;
	}
}

Cho mình hỏi là tất cả dấu mũi tên màu đỏ trong hình đều là con trỏ NEXT đúng k bạn ???

Cho mình hỏi ké:
tại sao cái hàm thêm đầu của mình cũng viết gần giống bạn này nhưng void InsertFirst(list l,node* p) thì không báo lỗi mà như hình vẽ lại báo lỗi là sao vậy ?

con trỏ C bá đạo. Hôm mình thi môn này mình đã phải học thuộc code.:sweat_smile:

1 Like

bạn phải truyền con trỏ tới list l: list *pList vì pList->pHead có thể thay đổi giá trị. Truyền list l là truyền tham trị của l rồi

vậy tại sao mình dùng list &l thì nó lại báo lỗi trong khi bài của bạn Dung_Nguyen3 lại đúng (mình xem video hướng dẫn thì cũng thấy dùng &)
như vậy list &l và list *l là như nhau à?

C đâu có truyền tham chiếu, làm sao viết list& l được

vậy bài trên là dùng C++ à. nếu vậy cho mình hỏi &l và *l có khác nhau không?
Như vậy bài trên mình phải dùng list *l à ?

dùng list* l. Mỗi lần insert phải gán p->pNext = l->pHead rồi l->pHead = p. Ngoài ra còn phải kiểm tra nếu l->pTail == NULL thì phải gán l->pTail = p nữa.

Mình đã làm giống bạn nhưng bài của mình vẫn bị lỗi không hiểu làm sao. Bạn vào xem giúp mình với

nhiều lỗi quá… hầu như hàm nào cũng sai ~.~

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