Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Doubly Linked List dạng Circular (vòng) trong JavaScript

Circular Doubly Linked List: Danh sách liên kết đôi vòng tròn. Con trỏ next của node cuối trỏ về node đầu, con trỏ prev của node đầu trỏ về node cuối. Duyệt được 2 chiều, vòng lặp vô tận.

Cấu trúc Node

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
    this.prev = null;
  }
}

Đặc điểm Circular Doubly Linked List

  • head.prev = tail
  • tail.next = head
  • Không có null ở next/prev của head/tail.
  • Duyệt từ bất kỳ node nào đều có thể đi hết vòng.

Thao tác cơ bản

Insert

  • Cập nhật next/prev của node mới, node lân cận, và head/tail nếu cần.
  • Ví dụ insert vào cuối: newNode.prev = tail; newNode.next = head; tail.next = newNode; head.prev = newNode; tail = newNode;

Delete

  • Cập nhật next/prev của node lân cận bỏ qua node bị xóa.
  • Nếu xóa head/tail → cập nhật head/tail mới.
  • Nếu list chỉ 1 node → head = tail = null (hoặc self-loop).

Ứng dụng

  • Round-robin scheduling (CPU task queue).
  • Playlist phát lặp (music player).
  • Game loop (entity management).
  • Undo/Redo buffer với kích thước cố định (ring buffer).

Doubly Linked List dạng Circular (vòng) trong JavaScript

Lưu ý: JS không có pointer, dùng reference object. GC tự dọn dẹp khi không còn reference.