![]() |
Linked List Başa Ekleme İşlemi |
#include<stdio.h> #include<stdlib.h> // ************************************* // ************************************* // ************************************* // ****Algoritma Uzmanı***************** // ************************************* // ************************************* // **algoritmauzmani.blogspot.com******* // ************************************* // ************************************* // ************************************* //dugum olusturuyoruz struct node { int data; //düğüm içerisindeki değeri taşıyacak struct node *next; // sonraki düğümü gösteren pointer değeri }; struct node* start = NULL; // başlangıç düğümü için özel start düğümü struct node* temp = NULL; // Elimizdeki değeri tutmak için geçici olarak kullanacağımız düğüm struct node* q = NULL; // Son düğümü bulmak için kullanacağımız düğüm // Bu fonksiyon sayesinde sona düğüm ekliyoruz. void sonaEkle(int veri) { temp = (struct node*)malloc(sizeof(struct node)); // temp düğümü için alan oluşturduk temp->data = veri; // Temp düğümüne fonksiyondan aldığımız data değişkenini atadık temp->next = NULL; // Temp Düğümü sonraki hiçbir düğümü işaret etmeyecek. if(start == NULL) //Eğer Start düğümü NULL ise start = temp; //start düğümüne temp düğümünü atıyoruz. else { // Burası tamamen algoritmauzmanı.com adresinde anlattığımız Linked List Traversal işlemi q = start; while(q->next!=NULL) { q = q->next; } q->next = temp; // Son düğümü buluyoruz, onun next pointerına başta oluşturduğumuz temp değerini atıyoruz. Çünkü bu sona atama işlemi. } } //Linked List Başa eleman Ekleme Fonksiyonu bu void basaEkle(int veri) { struct node* bas=NULL; //başa ekleyeceğimiz eleman için düğüm oluşturduk bas = (struct node*)malloc(sizeof(struct node)); // alan ayırdık bas->data = veri; // düğüme veri değerini atadık bas->next = start; // start değeri ikinci eleman oldu start = bas; // eklediğimiz düğüm ilk eleman oldu } //ekrana linked list elemanlarımızı yazdıran fonksiyon void yazdir() { q = start; while(q->next!=NULL) { printf("==>%d", q->data); q = q->next; } printf("=>%d", temp->data); //while döngüsüyle elemanları bastırırken son elemanı basmaz, bu yüzden temp değerini ayrı bastırıyorum. } int main() { int i, adet, deger, deger1, deger2; printf("kac adet bagli liste elemani gireceksiniz?"); //Kullanıcıdan kaç adet değer gireceğini alıyoruz scanf("%d", &adet); for(i=0; i<adet; i++) { printf("\n %d. sayiyi girin .... ", i+1); scanf("%d", °er); sonaEkle(deger); } printf("\n"); yazdir(); printf("\n basa eklemek istediginizi deger?..."); scanf("%d", °er); basaEkle(deger); yazdir(); return 0; }
Etiketler: bağlı listeler başa eleman ekleme, linked list başa eleman ekleme, linked list c kodu, linked list eleman ekleme