Dizi ve Bağlantılı Liste Arasındaki Fark

Yazar: Laura McKinney
Yaratılış Tarihi: 3 Nisan 2021
Güncelleme Tarihi: 7 Mayıs Ayı 2024
Anonim
Veri Yapılarına Giriş ve Bağlı Listeler (Linked List) -VY1
Video: Veri Yapılarına Giriş ve Bağlı Listeler (Linked List) -VY1

İçerik


Arasındaki büyük fark Dizi ve Bağlantılı liste yapılarıyla ilgili. Diziler endeks tabanlı her elemanın bir indeksle ilişkilendirildiği veri yapısı. Öte yandan, Bağlantılı liste Referanslar burada her düğüm verilerden ve önceki ve sonraki öğelere yapılan referanslardan oluşur.

Temel olarak, bir dizi, sıralı bellek konumlarında ortak bir başlık veya değişken adı altında depolanan benzer veri nesneleri kümesidir.

Bağlantılı bir liste, her bir elemanın bir sonraki elemanına bağlı olduğu bir eleman dizisini içeren bir veri yapısıdır. Bağlantılı liste öğesinde iki alan vardır. Biri Veri alanı ve diğeri bağlantı alanı, Veri alanı saklanacak ve işlenecek gerçek değeri içerir. Ayrıca, link alanı, bağlantılı listedeki bir sonraki veri öğesinin adresini tutar. Belirli bir düğüme erişmek için kullanılan adres bir işaretçi olarak bilinir.


Bir dizi ve bağlantılı liste arasındaki diğer bir önemli fark, Dizi'nin sabit bir boyuta sahip olması ve önceden bildirilmesi gereken, ancak Bağlantılı Liste'nin yürütme sırasında boyutlandırılması, genişletilmesi ve daraltılması ile sınırlı olmamasıdır.

  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

Karşılaştırma Tablosu

Karşılaştırma için temelDiziBağlantılı liste
TemelSabit sayıda veri öğesinden oluşan tutarlı bir kümedir.Değişken sayıda veri maddesi içeren sıralı bir settir.
BoyutDeklarasyon sırasında belirtildi.Belirtmeye gerek yok; yürütme sırasında büyür ve küçülür.
Depolama Tahsisi Eleman yeri derleme süresi boyunca tahsis edilir.Eleman konumu çalışma süresi boyunca atanır.
Elementlerin sırası Ardışık olarak depolanır Rastgele saklanır
Öğeye erişmeDoğrudan veya rasgele erişilen, yani dizi dizinini veya alt dizini belirtin.Sıralı olarak erişilen, yani listedeki ilk düğümden imleç ile başlayan Travers.
Elemanın yerleştirilmesi ve silinmesiVites değişimi gerektiğinden nispeten yavaş.Daha kolay, hızlı ve verimli.
Aramak İkili arama ve doğrusal aramadoğrusal arama
Bellek gerekliaz Daha
Hafıza KullanımıEtkisizVerimli


Array tanımı

Bir dizi, belirli sayıda homojen eleman veya veri maddesi kümesi olarak tanımlanır. Bir dizinin, yalnızca tüm veri sayılarını, tüm tam sayılarını, tüm kayan nokta sayılarını veya tüm karakterleri içerebileceği anlamına gelir. Bir dizinin bildirimi aşağıdaki gibidir:
int a;
İnt, veri türünü belirtir veya array öğeleri depolar. “A” bir dizinin adıdır ve köşeli parantez içinde belirtilen sayı bir dizinin depolayabileceği öğe sayısıdır, buna dizinin boyutu veya uzunluğu da denir.

Diziler hakkında hatırlanması gereken bazı kavramlara bakalım:

  • Bir dizinin tek tek elemanlarına, dizinin adını, ardından dizgiyi veya alt dizini (dizideki öğenin konumunu belirleyerek) köşeli parantez içinde tanımlayarak erişilebilir. Örneğin, dizinin 5. elemanını almak için a ifadesi yazmamız gerekir.
  • Her durumda, bir dizinin elemanları ardışık bir hafıza konumunda saklanır.
  • Dizinin ilk elemanı sıfır dizinine sahiptir. Bu, ilk ve son öğenin sırasıyla a ve a olarak belirtileceği anlamına gelir.
  • Bir dizide saklanabilecek elemanların sayısı, yani bir dizinin boyutu veya uzunluğu aşağıdaki denklem ile verilir:
    (üst sınır-alt sınır) + 1
    Yukarıdaki dizi için, (9-0) + 1 = 10 olacaktır. 0 dizinin alt sınırı, 9 ise dizinin üst sınırıdır.
  • Diziler döngüden okunabilir veya yazılabilir. Bir boyutlu diziyi okursak, okumak için bir döngü ve diğeri yazmak için diğeri gerektirir, örneğin:
    a. Bir dizi okumak için
    (i = 0; i <= 9; i ++)
    {scanf (“% d”, & a); }
    b. Dizi yazmak için
    (i = 0; i <= 9; i ++)
    {f (“% d”, a); }
  • Bir 2-D dizisi durumunda, iki ilmek gerektirir ve benzer şekilde n-boyutlu dizi n ilmek isterdi.

Dizilerde gerçekleştirilen işlemler şunlardır:

  1. Dizi oluşturulması
  2. Bir diziyi çaprazlama
  3. Yeni elemanların eklenmesi
  4. Gerekli elemanların silinmesi.
  5. Bir elemanın değiştirilmesi.
  6. Dizilerin birleştirilmesi

Örnek

Aşağıdaki program dizinin okunmasını ve yazılmasını göstermektedir.

#Dahil etmek
#Dahil etmek
geçersiz ana ()
{
int a, i;
f ("diziye girin");
(i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("diziye girin");
(i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Bağlantılı Listenin Tanımı

Bağlantılı liste, birbirine bağlı bazı veri öğelerinin belirli bir listesidir. Bu her öğe, mantıksal sırayı temsil eden bir sonraki öğeye işaret eder. Her bir öğeye iki bölümden oluşan bir düğüm adı verilir.

INFO bilgi saklar ve bir sonraki elemana işaret eden NOKTA. Adresleri sakladığınızı bildiğiniz gibi, C'de işaretçiler adında benzersiz bir veri yapılarımız var. Dolayısıyla listenin ikinci alanı bir işaretçi tipinde olmalıdır.

Bağlantılı listeler türleri Tek bağlantılı listeler, İki bağlantılı listeler, Dairesel bağlantılı listeler, Dairesel bağlantılı listelerdir.

Bağlı Listede gerçekleştirilen işlemler şunlardır:

  1. Oluşturma
  2. Traversing
  3. sokma
  4. silme
  5. Aramak
  6. birbirine bağlama
  7. Görüntüle

Örnek

Aşağıdaki kod parçası, bağlantılı bir listenin oluşturulmasını gösterir:

yapı düğümü
{
int num;
sonraki düğüm düğümü *;
}
start = NULL;
void create ()
{
typedef yapı düğümü NODE;
NODE * p, * q;
char seçimi;
ilk = NULL;
yap
{
p = (NODE *) malloc (sizeof (NODE));
f ("Veri öğesine n girin");
scanf ("% d", & p -> num);
eğer (p == NULL)
{
q = başlangıç;
while (q -> sonraki! = NULL)
{q = q -> sonraki
}
p -> sonraki = q -> sonraki;
q -> = p;
}
Başka
{
p -> sonraki = başlangıç;
start = p;
}
f ("Devam etmek istiyor musunuz (tür y veya n)? n");
scanf ("% c", & seçim);
}
while ((choice == y) || (choice == Y));
}

  1. Bir dizi, veri yapısı benzer tip veri elemanlarının bir koleksiyonunu içerirken, Bağlantılı liste, ilkel olmayan veri yapısı olarak kabul edilir, düğümler olarak bilinen sıralanmamış linkli elemanların bir koleksiyonunu içerir.
  2. Dizide, elemanlar indekslere aittir, yani dördüncü elemana girmek istiyorsanız, değişken ismini, dizini veya köşeli parantez içindeki konumu ile yazmalısınız.
    Bununla birlikte, bağlantılı bir listede, baştan başlamanız ve dördüncü öğeye ulaşana kadar ilerlemeniz gerekir.
  3. Bir eleman dizisine erişim hızlı iken, Bağlantılı liste doğrusal zaman alır, bu yüzden biraz daha yavaştır.
  4. Dizilere ekleme ve silme gibi işlemler çok zaman alır. Öte yandan, bu işlemlerin Bağlantılı listelerdeki performansı hızlıdır.
  5. Diziler sabit büyüklüktedir. Buna karşılık, Bağlantılı listeler dinamik ve esnektir ve boyutlarını genişletebilir ve daraltabilir.
  6. Bir dizide, derleme zamanı sırasında bellek atanırken Bağlı listesindeyken yürütme veya çalışma zamanı sırasında ayrılır.
  7. Öğeler art arda dizilerde depolanır, oysa Bağlantılı listelerde rastgele saklanır.
  8. Dizideki indeks içinde depolanan gerçek veriler nedeniyle bellek gereksinimi daha azdır. Buna karşılık olarak, bir sonraki ve önceki referanslama elemanlarının eklenmesi nedeniyle Bağlı Listelerde daha fazla belleğe ihtiyaç vardır.
  9. Ayrıca, dizide bellek kullanımı yetersizdir. Tersine, bellek kullanımı dizide etkilidir.

Sonuç

Dizi ve Bağlantılı listeler; yapılarına, erişim ve manipülasyon yöntemlerine, bellek gereksinimine ve kullanımlarına göre farklılık gösteren veri yapı tipleridir. Ve uygulanması konusunda özel avantaj ve dezavantajlara sahip olmak. Sonuç olarak, her ikisi de ihtiyaca göre kullanılabilir.