Temel olarak, bir dizi, sıralı bellek konumlarında ortak bir başlık veya bir değişken adı altında depolanan benzer veri nesneleri kümesidir.
Bağlantılı bir liste, her bir elemanın bir sonraki elemana bağlı olduğu bir eleman dizisini içeren bir veri yapısıdır. Bağlantılı liste öğesinde iki alan var. 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, Array'in sabit bir boyuta sahip olması ve önceden bildirilmesi gerekmesidir, ancak Bağlantılı Liste, yürütme sırasında boyut ve genişleme ve sözleşme ile sınırlı değildir.
Karşılaştırma Tablosu
Karşılaştırma için temel | Dizi | Bağlantılı liste |
---|---|---|
Temel | Sabit sayıda veri öğesinden oluşan tutarlı bir kümedir. | Değişken sayıda veri maddesi içeren sıralı bir settir. |
Boyut | Deklarasyon 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şme | Doğ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 silinmesi | Vites değişimi gerektiğinden nispeten yavaş. | Daha kolay, hızlı ve verimli. |
Aramak | İkili arama ve doğrusal arama | doğrusal arama |
Bellek gerekli | az | Daha |
Hafıza Kullanımı | Etkisiz | Verimli |
Array tanımı
Bir dizi, belirli sayıda homojen öğe veya veri öğesi 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 [10];
İ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 öğelerine, 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, bir [4] ifadesi yazmamız gerekir.
- Her durumda, bir dizinin elemanları ardışık bir hafıza konumunda saklanır.
- Dizinin ilk elemanı sıfır [0] dizinine sahiptir. Bu, ilk ve son elemanın sırasıyla [0] ve [9] olarak belirtileceği anlamına gelir.
- Bir dizide saklanabilecek elemanların sayısı, yani bir dizinin boyutu veya uzunluğu aşağıdaki eşitlikle 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 (yazdırmak) için diğeri gerektirir, örneğin:
a. Bir dizi okumak için
(i = 0; i <= 9; i ++)
{scanf (“% d”, & a [i]); }
b. Dizi yazmak için
(i = 0; i <= 9; i ++)
{printf (“% d”, a [i]); } - 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:
- Dizi oluşturulması
- Bir diziyi çaprazlama
- Yeni elemanların eklenmesi
- Gerekli elemanların silinmesi.
- Bir elemanın değiştirilmesi.
- Dizilerin birleştirilmesi
Örnek
Aşağıdaki program dizinin okunmasını ve yazılmasını göstermektedir.
#include
#include
void main ()
{
int a[10], i;
printf("Enter the array");
for ( i= 0; i <= 9; i++)
{
scanf ( "%d", &a[ i ] ) ;
}
printf( "Enter the array" );
for (i = 0 ; i <= 9 ; i++)
{
printf ( "%d\n", a[ i ] ) ;
}
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 öğ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 olarak adlandırılan benzersiz bir veri yapıları 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ğlantılı Listede yapılan işlemler şunlardır:
- Oluşturma
- traversing
- sokma
- silme
- Aramak
- birbirine bağlama
- Görüntüle
Örnek
Aşağıdaki kod parçası, bağlantılı bir listenin oluşturulmasını gösterir:
struct node
{
int num;
stuct node *next;
}
start = NULL;
void create()
{
typedef struct node NODE;
NODE *p, *q;
char choice;
first = NULL;
do
{
p = (NODE *) malloc (sizeof (NODE));
printf ("Enter the data item\n");
scanf ("%d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next ! = NULL)
{ q = q -> next
}
p -> next = q -> next;
q -> = p;
}
else
{
p -> next = start;
start = p;
}
printf ("Do you want to continue (type y or n) ? \n");
scanf ("%c", &choice) ;
}
while ((choice == 'y') || (choice == 'Y'));
}
Dizi ve Bağlantılı Liste Arasındaki Temel Farklılıklar
- 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, Bağlantılı liste ise düğümler olarak bilinen sıralanmamış bağlantılı elemanların bir koleksiyonunu içerir.
- Dizide, elemanlar indekslere aittir, yani, eğer dördüncü elemanın içine girmek istiyorsanız, değişken ismini, dizini veya köşeli parantez içindeki yeri 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. - Bir eleman dizisine erişim hızlı iken, Bağlantılı liste doğrusal zaman alır, bu yüzden oldukça yavaştır.
- Dizilere ekleme ve silme gibi işlemler çok zaman alır. Diğer yandan, Bağlantılı listelerde bu işlemlerin performansı hızlıdır.
- Diziler sabit büyüklüktedir. Buna karşılık, Bağlantılı listeler dinamik ve esnektir ve boyutlarını genişletebilir ve daraltabilir.
- 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.
- Öğeler ardışık olarak dizilerde depolanır, oysa Bağlantılı listelerde rastgele saklanır.
- Dizinin içinde indeks içinde depolanan gerçek veriler nedeniyle bellek gereksinimi daha azdır. Buna karşılık olarak, sonraki ve önceki referans elemanların eklenmesi nedeniyle Bağlı Listelerde daha fazla belleğe ihtiyaç vardır.
- Ek olarak, dizide bellek kullanımı yetersizdir. Tersine, bellek kullanımı dizide etkilidir.
Sonuç
Dizi ve Bağlantılı listeler yapıları, erişim ve manipülasyon yöntemleri, bellek gereksinimi ve kullanımı bakımından farklılık gösteren veri yapılarının türleridir. Ve uygulanması konusunda özel avantaj ve dezavantajlara sahip olmak. Sonuç olarak, her biri ihtiyaca göre kullanılabilir.