Một người mà tôi biết đang có kế hoạch triển khai trình soạn thảo văn bản trong tương lai gần, điều đó khiến tôi suy nghĩ về loại cấu trúc dữ liệu nào nhanh cho trình soạn thảo văn bản. Các cấu trúc được sử dụng nhiều nhất rõ ràng là dây thừng hoặc bộ đệm khoảng cách .
Cây Van Emde Boas chỉ là hàng đợi ưu tiên nhanh nhất xung quanh, nếu bạn không quan tâm đến giới hạn trên về số lượng vật phẩm bạn có thể đặt vào đó và chi phí khởi tạo lớn. Câu hỏi của tôi là liệu có tồn tại một số cấu trúc dữ liệu nhanh như cây van Emde Boas hay không, nhưng hỗ trợ các hoạt động soạn thảo văn bản.
Chúng tôi chỉ cần hỗ trợ tối đa ký tự trong cấu trúc dữ liệu của mình (vì vậy nếu , thì chúng tôi hỗ trợ tối đa 4GB ký tự ASCII). Chúng tôi được phép thời gian để khởi tạo cấu trúc dữ liệu mới. Chúng tôi muốn hỗ trợ các hoạt động sau:
- Chèn một ký tự ở vị trí trong (và do đó tăng vị trí của mỗi ký tự tiếp theo thêm 1).
- Xóa một ký tự ở vị trí trong .
- Trả về ký tự ở vị trí trong .
Vì vậy, chèn (0, 'a') theo sau là chèn (0, 'b') dẫn đến "ba".
Thậm chí tốt hơn sẽ là thế này:
- Trả về một 'con trỏ' cho một số chỉ mục trong .
- Đưa ra một 'con trỏ', trả về ký tự ở vị trí này trong .
- Đưa ra một 'con trỏ', xóa ký tự ở vị trí này trong .
- Cho một 'con trỏ', thêm một ký tự ở vị trí này trong và trả về một con trỏ đến vị trí sau.
- (tùy chọn) Đưa ra một 'con trỏ', trả về một 'con trỏ' cho ký tự tiếp theo / trước trong .