Con trỏ trong linked list

class node{
    int data;
    node* link;
};

chào mn
trong link list ,mỗi node có data và con trỏ trỏ tới phần tử kế tiếp.
vi dụ node* head là con trỏ trỏ tơi phần tử đầu tiên và con trỏ head chỉ chưa con trỏ trỏ tới phần tử đầu tiên mà ko có data,
vây khi e viết lệnh head=head->link thì head nó đang trỏ tới link của nó hay link của node đầu tiên ạ
và khi chạy xog lệnh head=head->link thì e chạy lệnh head->data thì nó sẽ lấy data của phần tử đầu tiên hay phần tử thứ 2 ạ, thank mn nhiều

head đang là phần tử thứ 2 của dãy ban đầu.

nó trỏ đến node thứ 2 vậy khi viết head->data nó sẽ lấy data của node thứ 2 chứ ạ

Vẽ lại cho đúng :V headnode* thì nó chỉ là con trỏ, ko có data nha

0xa1              0xb2              0xc3
+-------+----+    +-------+----+    +-------+----+
| data1 |0xb2|--->| data2 |0xc3|--->| data3 |NULL|
+-------+----+    +-------+----+    +-------+----+
^
+----+
|0xa1| head
+----+

khi gán head = head->link thì ở ví dụ này tương đương với gán head = 0xb2, head sẽ trỏ tới phần tử thứ 2, head->data lúc này sẽ có giá trị của data2

0xa1              0xb2              0xc3
+-------+----+    +-------+----+    +-------+----+
| data1 |0xb2|--->| data2 |0xc3|--->| data3 |NULL|
+-------+----+    +-------+----+    +-------+----+
                  ^
                  +----+
                  |0xb2| head
                  +----+
2 Likes

nếu bạn head=head-> link thì con trỏ head bạn chuyển sang phan tử thứ 2 và phần tử đầu tiên sẽ mất nếu dùng dslk đơn

mất nghĩa là bạn ko còn cách nào có lại được chứ trong vùng nhớ vẫn còn nhé leak memory ấy

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