Diziler ve bağlantılı listeler üzerine dersimize hoş geldiniz. Bu derste, verileri depolamanın ve düzenlemenin iki basit yolunu öğreneceğiz. Okulda bir sıra oyuncak kutusu veya bir sıra dolap olduğunu düşünün. Diziler ve bağlantılı listeler benzer şekilde çalışır. Her şeyi düzenli ve kolay bulunur halde tutmamıza yardımcı olurlar. Bu ders, bu fikirleri kolayca anlamanıza yardımcı olmak için günlük örneklerle basit bir dille yazılmıştır.
Veri yapıları bilgisayarların bilgileri depolamasına ve düzenlemesine yardımcı olur. İki önemli veri yapısı diziler ve bağlantılı listelerdir. Bir diziyi bir kutu satırı, bağlantılı listeyi ise bir hazine avındaki birbirine bağlı ipuçları zinciri olarak düşünebilirsiniz. Bunların ikisi de oyuncaklar, kitaplar veya en sevdiğiniz atıştırmalıklar gibi birçok öğeyi takip etmemize yardımcı olur.
Dizinin ne olduğu, bağlı listenin ne olduğu, nasıl çalıştıkları ve nasıl farklı oldukları hakkında konuşacağız. Ayrıca bu fikirleri olabildiğince açık hale getiren gerçek dünya örnekleri de göreceğiz.
Bir dizi, yalnızca bir öğe koleksiyonudur. Her kutunun bir öğeyi tuttuğu bir kutu sırası gibidir. Örneğin, bir sıra halinde dizilmiş beş kutudan oluşan bir set hayal edin. Her kutuyu en sevdiğiniz oyuncağı veya bir atıştırmalığı saklamak için kullanabilirsiniz.
Dizideki her kutunun indeks adı verilen bir numarası vardır. İlk kutu genellikle 0, sonraki 1, sonra 2 ve benzeri şekilde numaralandırılır. Bu numaralandırma belirli bir öğeyi hızlı bir şekilde bulmanıza yardımcı olur. Örneğin, üçüncü kutudaki öğeyi istiyorsanız, indeksi 2 olan kutuya bakmanız yeterlidir.
İşte bir dizideki bir öğeyi nasıl bulabileceğimizi açıklayan basit bir formül. İlk kutu bir başlangıç noktasındaysa, o zaman herhangi bir öğenin adresi şu şekilde düşünülebilir:
\( \textrm{Adres}(A(i)) = \textrm{Adres}(A(0)) + i \times \textrm{(bir öğenin boyutu)} \)
Bu bize ilk kutudan istediğimiz kutuya geçmek için belirli sayıda boşluk saymamız gerektiğini söylüyor.
Dizilimi küçük bir sinema salonundaki koltuklar gibi düşünün. Her koltuğun bir numarası vardır ve numarasını biliyorsanız koltuğunuza hızlıca gidebilirsiniz.
Okulunuzun her biri benzersiz bir numaraya sahip bir sıra dolabı olduğunu düşünün. Çantanızı dolabınıza koymaya gittiğinizde, dolaptaki belirli numarayı kullanırsınız. Bir dizide, her dolap bir kutu gibidir ve numara size çantanızın veya verilerinizin tam olarak nerede saklandığını söyler.
Bağlantılı liste öğeleri depolamanın başka bir yoludur. Diziden farklıdır çünkü sabit kutulardan oluşan uzun bir satır kullanmaz. Bunun yerine düğüm adı verilen özel kutular kullanır. Her düğüm bir öğe tutar ve ayrıca bir sonraki düğümün nerede olduğunu söyleyen bir işaretçiye sahiptir.
Bir hazine avında olduğunuzu hayal edin. Bulduğunuz her ipucu size bir sonraki ipucunun nerede saklı olduğunu söyler. Bağlantılı bir listede, her düğüm bu ipuçlarından biri gibidir. İlk ipucundan başladığınızda, ihtiyacınız olanı bulana kadar işaretçiyi bir düğümden diğerine takip edersiniz.
Her düğümü küçük bir zarf olarak düşünebilirsiniz. Zarf bir kart (veri) ve ayrıca bir not (işaretçi) taşır. Bu not size satırda hangi zarfın bir sonraki olduğunu söyler.
Bir düğümün ne olduğunu yazmanın basit bir yoluna bakalım:
Düğüm = {veri, işaretçi)
Bir düğümdeki "veri" depolanan bilgidir ve "işaretçi" sizi bir sonraki düğüme yönlendiren bir ok gibidir. Bir dizinin aksine, bağlı bir liste tüm düğümlerin bellekte yan yana olmasını gerektirmez; işaretçiler onları birbirine bağladığı sürece herhangi bir yerde olabilirler.
Bağlantılı listelerin farklı stilleri vardır. İşte üç yaygın türü:
Bir hazine haritasını takip ettiğinizi hayal edin. Haritadaki her adım size bir sonraki adımın nerede olduğunu söyler. Ekstra bir ipucu ekleseniz veya birini çıkarsanız bile, her karttaki ipucunu okuyarak takip edebilirsiniz. Bağlantılı liste böyle çalışır. Her düğüm (veya ipucu) bir sonrakine bağlıdır ve listede birer adım ilerlemenizi sağlar.
Diziler ve bağlı listeler öğeleri depolamamıza yardımcı olur, ancak bunu farklı şekillerde yaparlar. İşte bazı karşılaştırmalar:
Her veri yapısının iyi yanları ve zorlukları vardır. Bunları anlamak, kullanmak için en iyisini seçmenize yardımcı olur.
Diziler:
Avantajları:
Dezavantajları:
Bağlantılı Listeler:
Avantajları:
Dezavantajları:
Bir diziyi basit bir şekilde nasıl kullanabileceğimize bakalım. Beş favori renginizi saklamak istediğinizi varsayalım. Beş kutudan oluşan bir dizi oluşturursunuz. Sonra her rengi sırayla bir kutuya koyarsınız. Örneğin:
Şimdi, eğer Kutu 2'de hangi rengin olduğunu bilmek istiyorsanız, o kutuya bakmanız yeterlidir ve "Yeşil"i göreceksiniz. Bu kolay erişim, bir diziyi kullanmanın en iyi yanlarından biridir.
Şimdi, bağlantılı bir listeye bakalım. Bunu bir ipucuyla başlayıp ardından bir sonrakini bulmak için talimatları takip ettiğiniz bir hazine avı olarak düşünün. Bağlantılı bir listede, biraz veri içeren bir düğümle başlarız. Bu düğümün, hangi düğümün sonra geleceğini gösteren bir işaretçisi vardır.
Örneğin, eğlenceli bir hikaye anlatan bağlantılı bir listede üç düğüm olduğunu düşünün:
Düğüm 1'den başlayıp işaretçiyi (ipucu) Düğüm 2'ye, sonra da Düğüm 3'e kadar takip edersiniz. Bunlardan herhangi birinin arasına yeni bir ipucu eklemek isteseniz bile, yalnızca birkaç işaretçiyi değiştirmeniz gerekir. Bu, bağlantılı listeleri oldukça esnek hale getirir.
Bu veri yapılarını zihninizde canlandırmanız faydalı olacaktır. Bir diziyi rafta duran uzun bir açık, etiketli kutular sırası olarak hayal edin. Her kutu bir şey tutar ve sabit bir yere sahiptir. Şimdi, bağlantılı bir listeyi bir kart dizisi olarak hayal edin. Her kartta bir sonraki kartın nerede saklandığını belirten bir not vardır. Bir dizide, numarasına göre doğrudan belirli bir kutuya atlayabilirsiniz. Bağlantılı bir listede, kartları sırayla takip etmeniz gerekir.
Diziler birçok günlük şeyde kullanılır. Örneğin, bir takvimi düşünün. Bir takvimde her hafta sabit sayıda gün vardır ve bu günler bir sıra halinde düzenlenir. Takvime baktığınızda, hangi günün hangi noktada olduğunu tam olarak bilirsiniz.
Bağlı listeler, öğelerin sayısı zamanla değişebileceğinde kullanılır. Bir dondurma kamyonunun önünde bekleyen bir insan sırasını düşünün. Bazen sıraya yeni insanlar katılır ve bazen birileri ayrılır. Sıra, yeni bir sabit yapı oluşturmak zorunda kalmadan büyüyebilir veya küçülebilir. Bu, bağlı listeleri, şeylerin sık sık değiştiği senaryolarda çok kullanışlı hale getirir.
Diziler ve bağlı listeler arasında seçim yapmak, verilerinizle ne yapmanız gerektiğine bağlıdır. Her zaman sabit sayıda öğeniz olacağını biliyorsanız (örneğin bir haftadaki günler gibi) o zaman bir dizi çok uygundur. Ancak, veri miktarı değişirse ve kolayca uyum sağlayabilen bir yapıya ihtiyacınız varsa, bağlı liste daha iyi bir seçim olacaktır.
Örneğin, bir bilgisayar oyununda, seviye sayısı sabit olduğundan her seviye için puanları depolamak için bir dizi kullanılabilir. Öte yandan, bağlı bir liste, oyun devam ettikçe büyüyebilen bir oyuncu eylemleri veya hareketleri listesini yönetmek için kullanılabilir.
Öğelere konumlarına göre hızlı erişime ihtiyacınız olduğunda, diziler en iyi seçimdir. Bunun nedeni, numarasını biliyorsanız doğrudan herhangi bir noktaya atlayabilmenizdir. Ancak, sık sık öğe eklemeniz veya kaldırmanız gerektiğinde, bağlı listeler daha faydalıdır çünkü çok sayıda öğeyi taşımadan listeyi değiştirmenize olanak tanır.
Bunu şu şekilde düşünün: Belirli sayıda sayfadan oluşan bir çıkartma albümünüz varsa, dizi o albüme benzer. Ancak bir ilan panosuna eklediğiniz büyüyen bir kartpostal koleksiyonunuz varsa, bağlantılı liste buna daha çok benzer çünkü tüm panoyu yeniden düzenlemeden diğerlerinin arasına kolayca yeni bir kartpostal ekleyebilirsiniz.
Dersimizin ana noktalarını tekrar gözden geçirelim:
Diziler:
Bağlantılı Listeler:
Farklılıklar ve Kullanımlar:
Özetle, diziler ve bağlı listeler verileri düzenlemek için kullanılan iki önemli veri yapısıdır. Diziler, sabit, numaralandırılmış kutulardan oluşan bir sıra gibi çalışırken, bağlı listeler her adımın size bir sonraki adımda nereye gideceğinizi söylediği bir hazine avı gibi çalışır. Her iki yöntemin de kendine özgü güçlü yanları vardır ve görevin ihtiyaçlarına göre farklı durumlarda kullanılırlar.
Bu iki veri depolama yöntemini anlamak çok faydalıdır. Birçok bilgisayar programı, oyun ve uygulama arka planda diziler ve bağlantılı listeler kullanır. Bunların nasıl çalıştığını öğrenerek, bilgisayarların verileri düzenleme ve yönetme şekline dair fikir edinirsiniz.
Unutmayın: Yapı sabit olduğunda diziler basit ve hızlıdır, bağlantılı listeler ise veriler değiştiğinde esneklik sunar. İster bir sıra dolap, ister bir ipucu hazinesi hayal edin, bu kavramlar bilginin her gün nasıl saklandığını ve kullanıldığını anlamamıza yardımcı olur.
Bu ders size dizilerin ve bağlı listelerin ne olduğu konusunda net bir fikir verdi. Bilgisayar bilimini öğrenmeye ve keşfetmeye devam ettikçe, bu temel fikirler daha karmaşık konuları anlamanıza yardımcı olacaktır. Bunlar daha gelişmiş veri yapıları ve algoritmaların yapı taşlarıdır.
Önemli Noktaların Özeti:
Diziler ve bağlı listeler hakkındaki bu dersi okuduğunuz için teşekkür ederiz. Bu yöntemleri açık ve basit bir şekilde veri depolamak için öğrenmekten keyif aldığınızı umuyoruz. Büyüdükçe ve daha fazla şey öğrendikçe, bu temel yapıları ve bilgisayarların verimli bir şekilde çalışmasına nasıl yardımcı olduklarını hatırlayın.