Öğeleri ekleyerek ve kaldırarak da değiştirmek istediğiniz sıralı bir kümeniz olduğunu varsayalım. Ayrıca, daha sonra önceki veya sonraki öğeyi alabileceğiniz şekilde bir öğeye referans tutma yeteneğine sahip olmanız gerekir. Örneğin, bir kitaptaki yapılacaklar listesi veya paragraflar kümesi.
Öncelikle, kümenin dışındaki nesnelere referansları tutmak istiyorsanız, büyük olasılıkla nesneleri kendileri depolamak yerine dizide işaretçiler depolayacağınızı unutmayın. Aksi takdirde diziye ekleyemezsiniz - nesneler diziye katıştırılırsa, eklemeler sırasında hareket ederler ve onlara işaretçiler geçersiz olur. Aynı şey dizi indeksleri için de geçerlidir.
İlk probleminiz, sizin de belirttiğiniz gibi, ekleme bağlantılı liste O (1) içine ekleme yapılmasına izin verir, ancak bir dizi genellikle O (n) gerektirir. Bu problem kısmen aşılabilir - hem okuma hem de yazma işleminin en kötü ihtimalle logaritmik olduğu dizi benzeri sıradan erişim arabirimi veren bir veri yapısı oluşturmak mümkündür.
İkinci ve daha ciddi probleminiz, bir sonraki elemanı bulmak için verilen elemanın O (n) olmasıdır. Küme değiştirilmediyse, öğenin dizinini işaretçi yerine referans olarak tutabilir ve böylece find-next'i O (1) işlemi haline getirebilirsiniz, ancak elinizde olduğu gibi nesnenin kendisine bir işaretçi ve hiçbir şekilde "dizinin" tamamını taramak dışında dizideki geçerli dizinini belirlemek için. Bu, diziler için çözülemez bir sorundur - eklemeleri optimize edebilseniz bile, sonraki bulma türünü optimize etmek için yapabileceğiniz hiçbir şey yoktur.