btvn.vn
Tìm kiếm Đăng nhập

Tạo nút và chèn đầu danh sách liên kết

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Mỗi nút biết nút tiếp theo

Trong mô hình này, `Node` giữ `key` là dữ liệu và `next` là tham chiếu tới nút kế tiếp; `LL` giữ `head` là nút đầu. Danh sách rỗng có `head is None`. Nút cuối có `next is None`. Một chuỗi ví dụ là `head → 5 → 2 → 8 → None`. Đây là cấu trúc **liên kết đơn**: từ một nút chỉ biết nút sau, muốn tìm nút trước phải bắt đầu từ head và duyệt. Python `list` quen thuộc là kiểu dữ liệu khác, dù cũng lưu được một dãy giá trị.

Nối nút mới trước khi đổi head

```python class Node: def __init__(self, key): self.key = key self.next = None class LL: def __init__(self): self.head = None def chen_dau(L, key): moi = Node(key) moi.next = L.head L.head = moi def cac_khoa(L): ket_qua = [] x = L.head while x is not None: ket_qua.append(x.key) x = x.next return ket_qua L = LL() chen_dau(L, 5) chen_dau(L, 2) chen_dau(L, 8) print(cac_khoa(L)) ``` Kết quả là `[8, 2, 5]`, vì mỗi nút mới lên **đầu**. Hai dòng trong `chen_dau` có thứ tự quan trọng: đặt `moi.next` trỏ vào đầu cũ, rồi mới cho `head` trỏ vào nút mới. Nếu đổi head trước mà không giữ đầu cũ, các nút cũ sẽ không còn nối với danh sách mới. Khi L rỗng, `moi.next` nhận `None`, nên cùng mã vẫn hoạt động.

Bài luyện

Danh sách liên kết rỗng trong mô hình này có `L.head` bằng gì?
Chọn một đáp án

Bài luyện

Chèn đầu lần lượt 5, 2, 8 thì thứ tự khi duyệt từ head là gì?
Chọn một đáp án

Bài luyện

Trong `chen_dau`, vì sao gán `moi.next = L.head` trước `L.head = moi`?
Chọn một đáp án

Đang học