1~

Minter Coder's Blog

Veri Yapıları & Algoritmalar Linked List 4 -Başa Eleman Ekleme

2022-05-23

Arkadaşlar merhabalar bu derste bağlı listelerde başa eleman eklemeyi göreceğiz aşağıya tek tek yazacağımıza ben bütün her şeyi detaylı bir şekilde koda döktüm önceki derste sona eleman ekleme vardı şimdi başa eleman ekleme ile birlikte vereceğim , aşağıya bırakıyorum.

Sona eleman ekleme functionu :


void addDataToHead(int data){
    struct node * temp,*ptr;
    ptr=(struct node *) malloc(sizeof(struct node));
    ptr->data=data;
    
    if(head == NULL){
        // artik ilk dugum ekledigimiz dugum olacak eger ki liste boş ise
        head=ptr;
        head->next=NULL;
    }else{
        // ilk elemanımızı gecici pointerimiza atiyoruz cunku bu artik 2.eleman olacak
        temp=head;
        // ilk elemanımız artık yeni ekledigimiz eleman ptr olacak
        head=ptr;
        // artık yeni eklediğimiz elemanın next'i gecici yani bizim önceki head'imiz olacak.
        ptr->next=temp;
    }

}

 

İlk ve son düğüm eklemenin birlikte verildiği functionlar ve switch case yapısıyla birlikte kullanıcıdan data aldığımız kodlar.

#include<stdio.h>
#include<stdlib.h>

struct node{
    int data;
    struct node * next;
};


// ilk dugumumuz
struct node * head=NULL;

void addDataToHead(int data){
    struct node * temp,*ptr;
    ptr=(struct node *) malloc(sizeof(struct node));
    ptr->data=data;
    
    if(head == NULL){
        // artik ilk dugum ekledigimiz dugum olacak eger ki liste boş ise
        head=ptr;
        head->next=NULL;
    }else{
        // ilk elemanımızı gecici pointerimiza atiyoruz cunku bu artik 2.eleman olacak
        temp=head;
        // ilk elemanımız artık yeni ekledigimiz eleman ptr olacak
        head=ptr;
        // artık yeni eklediğimiz elemanın next'i gecici yani bizim önceki head'imiz olacak.
        ptr->next=temp;
    }

}

void addData(int data){
    // temp gecici node ilerde kullanacagimiz , ptr ise eklenecek eleman
    struct node * temp,*ptr;
    // bellekten yerimizi ayırıyoruz
    ptr=(struct node *) malloc(sizeof(struct node));
    // datamizi yeni ekleyeceğimiz elemana aktariyoruz
    ptr->data=data;
    
    // head NULL yani eleman hiç yok ise yeni eklenen elemani atiyoruz
    if(head == NULL){
        head=ptr;
        head->next=NULL;    
    }
    // eğer ki eleman varsa
    else{
        temp=head;
        // en son düğümü buluyoruz
        while(temp->next!=NULL){
            temp=temp->next;
        }
        // son eleman yeni eklenen eleman ptr'ı gösterecek
        temp->next=ptr;
        // ptr son eleman olduğu için NULL gösterecek.
        ptr->next=NULL;
        
    }
}

void display(){
    struct node *temp;
    if(head == NULL){
        printf("List bos!!");
    }else{
        temp=head;
        printf("\n");
        while(temp->next!=NULL){
            printf("%d\t",temp->data);
            temp=temp->next;
        }
        printf("%d",temp->data);
    }

}


int main(){
    int choice,data;
    while(1){
        printf("\n1)Sona Ekle\n2)Basa Ekle\n3)Verileri Goruntule\nSeciminizi giriniz : ");
        scanf("%d",&choice);
        switch(choice){
            case 1: printf("Data degerini giriniz : ");scanf("%d",&data);addData(data);break;
            case 2: printf("Data degerini giriniz : ");scanf("%d",&data);addDataToHead(data);break;
            case 3: display();break;
                
                
        
        }
    }
    
    
    
    return 0;
}