Seseorang yang saya kenal berencana mengimplementasikan editor teks dalam waktu dekat, yang mendorong saya untuk berpikir tentang jenis struktur data apa yang cepat untuk editor teks. Struktur yang paling sering digunakan adalah tali atau penyangga celah .
Pohon Van Emde Boas hanya tentang antrian prioritas tercepat di sekitar, jika Anda tidak keberatan dengan batas atas jumlah item yang dapat Anda masukkan ke dalamnya dan biaya inisialisasi yang besar. Pertanyaan saya adalah apakah ada beberapa struktur data yang secepat pohon van Emde Boas, tetapi mendukung operasi editor teks.
Kami hanya perlu mendukung hingga karakter dalam struktur data kami (jadi jika , maka kami mendukung karakter ASCII hingga 4GB). Kami diizinkan waktu untuk menginisialisasi struktur data baru. Kami ingin mendukung operasi berikut:
- Masukkan karakter pada posisi di (dan dengan demikian meningkatkan posisi setiap karakter selanjutnya sebesar 1).
- Hapus karakter pada posisi di .
- Kembalikan karakter pada posisi di .
Jadi, masukkan (0, 'a') diikuti dengan memasukkan (0, 'b') menghasilkan "ba".
Yang lebih baik adalah ini:
- Kembalikan 'penunjuk' ke beberapa indeks di .
- Diberi 'penunjuk', kembalikan karakter pada posisi ini dalam .
- Diberi 'penunjuk', hapus karakter di posisi ini di .
- Diberi 'penunjuk', tambahkan karakter pada posisi ini di dan kembalikan penunjuk ke posisi berikut.
- (opsional) Diberikan 'penunjuk', kembalikan 'penunjuk' ke karakter berikutnya / sebelumnya di .