Hỏi về thuật toán thêm node vào linked list

a/c cho e hỏi, thuật toán này là thuật toán thêm node p vào sau node q trong danh sách liên kết đơn, cho e hỏi là đoạn NODE *g=k->Next sao không đổi lại được thành k->Next=g ạ, a/c có thể giải thích ý nghĩa dòng đấy là gì ạ

for (NODE *k = l.Head; k != NULL; k = k->Next)
{
    if (q->data == k->data)
    {
        NODE *g=k->Next;
        p->Next = q;
        k->Next = p;
    }
}

Biến p ở đâu ra cơ? :sweat:

Bạn copy luôn cái hàm đó lên nhé :smiley:

2 Likes

Chắc như vầy nè.

void addNode(LinkedList &l, NODE *p, NODE *q) {
  for (...) { ... }
}
3 Likes

NODE *g là sự khởi tạo thô tục của 1 con trỏ. Chính nó cần 1 sự gán ghép đến 1 địa chỉ vì vậy
k->Next = g sẽ hướng đến lỗi Access Violation

3 Likes

sorry a nha, hàm giống như a hùng vừa cmt đấy ạ

em cảm ơn anh nhiều, em hiểu rồi ạ

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