tôi đã được đưa ra như việc học tập của Introduction to Algorithms tập thể dục 11.1-3
mà đi như sau:Thực hiện một bảng địa chỉ trực tiếp
Đề nghị làm thế nào để thực hiện một bảng trực tiếp truy cập, trong đó các phím của các yếu tố được lưu trữ không cần phải phân biệt và các yếu tố có thể có dữ liệu vệ tinh. Tất cả ba hoạt động từ điển (Chèn, Xóa và Tìm kiếm) sẽ chạy trong thời gian O (1). Đừng quên rằng Xóa mất như một đối số một con trỏ đến một đối tượng sẽ bị xóa, không phải là một khóa.
Vâng, Chèn là không có vấn đề, vì nó chỉ đơn giản có nghĩa là tạo ra một danh sách liên kết tại vị trí thích hợp trong bảng (nếu nó chưa tồn tại) và thêm yếu tố vào nó. Tìm kiếm, được cung cấp một khóa, có thể trả về bất kỳ phần tử nào khớp với khóa, vì vậy nó chỉ đơn giản có nghĩa là chúng ta cần trả về phần đầu của danh sách khớp trong bảng.
Vấn đề của tôi là với thao tác Xóa. Nếu tôi sửa đổi đối tượng để thêm vào nó một con trỏ đến nút của nó trong danh sách liên kết, thì tôi có thể xóa trong O (1), nhưng tôi không chắc mình có được phép thay đổi đối tượng hay không. Có cách nào để làm điều này mà không thay đổi đối tượng nhất định?
+1 để đăng câu hỏi về bài tập về nhà với tiết lộ và cho thấy rằng bạn đã thử điều gì đó. Chào mừng bạn đến với SO – JoshJordan
Danh sách liên kết vani tiêu chuẩn sẽ không cung cấp cho bạn hiệu suất tìm kiếm O (1). –
@GregS - Tôi đã nói tôi có thể trả lại bất kỳ phần tử nào có khóa khớp, nghĩa là tôi có thể trả về đầu của danh sách, đó là O (1). –