Bài tập về Double Linked List
I. Khởi tạo và thao tác cơ bản
- Khởi tạo danh sách liên kết đôi rỗng
- Thêm phần tử vào đầu danh sách
- Thêm phần tử vào cuối danh sách
- Thêm phần tử tại vị trí bất kỳ
- Hiển thị danh sách từ đầu đến cuối
- Hiển thị danh sách từ cuối đến đầu
- Đếm số phần tử trong danh sách
- Xóa phần tử ở đầu danh sách
- Xóa phần tử ở cuối danh sách
- Xóa phần tử tại vị trí bất kỳ
II. Tìm kiếm và thống kê
- Tìm phần tử có giá trị x
- Đếm số lần xuất hiện của một giá trị
- Tìm phần tử lớn nhất và nhỏ nhất
- Tính tổng các phần tử
- Kiểm tra danh sách có đối xứng không
- Đếm số phần tử chẵn/lẻ
- Tìm phần tử nguyên tố đầu tiên
- Tính trung bình cộng các phần tử
- Đếm số node có giá trị lớn hơn giá trị cho trước
- Đếm số node là số chính phương
III. Chỉnh sửa danh sách
- Sắp xếp danh sách tăng dần
- Sắp xếp danh sách giảm dần
- Đảo ngược danh sách
- Chèn phần tử sao cho danh sách luôn tăng dần
- Xóa tất cả các node có giá trị x
- Xóa các node trùng nhau
- Thêm phần tử sau node có giá trị x
- Thêm phần tử trước node có giá trị x
- Tách danh sách thành 2 danh sách chẵn/lẻ
- Gộp 2 danh sách thành 1 danh sách liên kết đôi
IV. Đệ quy và nâng cao
- Đếm số phần tử bằng đệ quy
- Tìm phần tử lớn nhất bằng đệ quy
- Đảo ngược danh sách bằng đệ quy
- So sánh hai danh sách liên kết đôi
- Kiểm tra danh sách có vòng lặp không
- Chuyển danh sách liên kết đơn sang danh sách đôi
- Chuyển danh sách đôi sang mảng
- Chuyển mảng thành danh sách đôi
- Đếm số phần tử là bội của k
- Gộp 3 danh sách liên kết đôi
V. Ứng dụng và mô phỏng
- Mô phỏng trình duyệt web (Back/Forward)
- Mô phỏng undo/redo bằng danh sách đôi
- Quản lý danh sách sản phẩm thêm/xóa hai đầu
- Quản lý playlist nhạc có thể chạy hai chiều
- Chuyển danh sách đôi thành stack
- Chuyển danh sách đôi thành queue
- Mô phỏng vòng quay trò chơi
- Mô phỏng xếp lịch học trong tuần
- Lưu trữ lịch sử thao tác người dùng
- Phân tích dữ liệu tài chính theo chiều thời gian ngược