C Veri Ekleme

C Veri Yapılarına Veri Ekleme

C programlama dilinde veri yapıları, verileri düzenli ve verimli bir şekilde depolamak ve yönetmek için kullanılan yapılardır. Veri yapılarına veri ekleme, bu yapıları kullanırken en sık karşılaşılan işlemlerden biridir. Bu makalede, C’de yaygın olarak kullanılan veri yapılarına veri ekleme işlemlerini ayrıntılı olarak inceleyeceğiz.

Dizilere Veri Ekleme

Diziler, aynı veri türünde birden fazla öğeyi sıralı bir şekilde depolayan veri yapılardır. C’de bir diziye veri eklemek için dizinin sonuna yeni bir öğe eklenir. Bu işlem, dizinin son öğesinin adresine erişerek ve yeni öğeyi bu adrese atayarak gerçekleştirilir.

“`c

include

int main() {
int dizi[5];

// Dizinin sonuna 10 değerini ekle
dizi[4] = 10;

// Dizinin son öğesini yazdır
printf("%d\n", dizi[4]);

return 0;

}
“`

Bağlı Listeye Veri Ekleme

Bağlı listeler, öğeleri birbirine bağlı düğümlerle depolayan dinamik veri yapılardır. Bir bağlı listeye veri eklemek, yeni bir düğüm oluşturmayı ve bu düğümü listeye bağlamayı içerir.

Başına Ekleme: Yeni bir düğümü bağlı listenin başına eklemek için, yeni düğümün next işaretçisi mevcut baş düğümüne işaret etmeli ve mevcut baş düğüm yeni düğüme işaret etmelidir.

“`c
struct dugum {
int veri;
struct dugum *next;
};

void basaEkle(struct dugum head, int veri) {
struct dugum
yeniDugum = (struct dugum
)malloc(sizeof(struct dugum));
yeniDugum->veri = veri;
yeniDugum->next = head;
head = yeniDugum;
}
“`

Sonuna Ekleme: Yeni bir düğümü bağlı listenin sonuna eklemek için, mevcut son düğümün next işaretçisi yeni düğüme işaret etmeli ve yeni düğümün next işaretçisi NULL olmalıdır.

“`c
void sonaEkle(struct dugum head, int veri) {
struct dugum
yeniDugum = (struct dugum
)malloc(sizeof(struct dugum));
yeniDugum->veri = veri;
yeniDugum->next = NULL;

if (*head == NULL) {
    *head = yeniDugum;
} else {
    struct dugum *gecici = *head;
    while (gecici->next != NULL) {
        gecici = gecici->next;
    }
    gecici->next = yeniDugum;
}

}
“`

Yığınlara Veri Ekleme

Yığınlar, öğeleri son giren ilk çıkar (LIFO) ilkesine göre depolayan veri yapılardır. Bir yığına veri eklemek, yeni bir öğeyi yığının tepesine eklemeyi içerir.

“`c

include

struct yigin {
int veri;
struct yigin *next;
};

void yiginaEkle(struct yigin top, int veri) {
struct yigin
yeniDugum = (struct yigin
)malloc(sizeof(struct yigin));
yeniDugum->veri = veri;
yeniDugum->next = top;
top = yeniDugum;
}
“`

Kuyruklara Veri Ekleme

Kuyruklar, öğeleri ilk giren ilk çıkar (FIFO) ilkesine göre depolayan veri yapılardır. Bir kuyruğa veri eklemek, yeni bir öğeyi kuyruğun sonuna eklemeyi içerir.

“`c

include

struct kuyruk {
int veri;
struct kuyruk *next;
};

void kuyrugaEkle(struct kuyruk front, struct kuyruk rear, int veri) {
struct kuyruk yeniDugum = (struct kuyruk)malloc(sizeof(struct kuyruk));
yeniDugum->veri = veri;
yeniDugum->next = NULL;

if (*front == NULL) {
    *front = yeniDugum;
    *rear = yeniDugum;
} else {
    (*rear)->next = yeniDugum;
    *rear = yeniDugum;
}

}
“`

İkili Arama Ağaçlarına Veri Ekleme

İkili arama ağaçları (BST’ler), öğeleri sıralı bir şekilde depolayan ve hızlı arama ve ekleme işlemlerine izin veren veri yapılardır. Bir BST’ye veri eklemek, yeni bir düğüm oluşturmayı ve bu düğümü ağaca doğru konuma yerleştirmeyi içerir.

“`c
struct dugum {
int veri;
struct dugum sol;
struct dugum
sag;
};

struct dugum BSTyeEkle(struct dugum kok, int veri) {
if (kok == NULL) {
struct dugum yeniDugum = (struct dugum)malloc(sizeof(struct dugum));
yeniDugum->veri = veri;
yeniDugum->sol = NULL;
yeniDugum->sag = NULL;
return yeniDugum;
} else {
if (veri < kok->veri) {
kok->sol = BSTyeEkle(kok->sol, veri);
} else {
kok->sag = BSTyeEkle(kok->sag, veri);
}
return kok;
}
}
“`

Faydalı Kaynaklar


Yayımlandı

kategorisi