Veri Yapıları Bağlı Liste(Linked List) C++ Kodu

C++ ile oluşturulmuş bağıl liste(linked list) kodu.

#include<iostream>
using namespace std;

struct Eleman
{
    int veri;
    Eleman *ileri;
};

struct Liste
{
    Eleman *bas;
    Eleman *son;
    Liste(){bas=NULL; son=NULL;}

    void elemanEkle(Eleman *e)
    {
        if(bas==NULL)
            bas=e;
        else
            son->ileri=e;
        son=e;
    }

    int elemanS()
    {
        int s=0;
        Eleman *p=bas;
        while(p!=NULL)
        {
            s++;
            p=p->ileri;
        }
        return s;
    }

    void arayaEkle(Eleman *yeni, int sira)
    {
        int kacTane=elemanS();
        if(sira==0)
        {
            yeni->ileri=bas;
            bas=yeni;
        }
        else if(sira==kacTane-1)
        {
            //elemanEkle(yeni);
            son->ileri=yeni;
            son=yeni;
        }
        else
        {
            Eleman *p=bas;
            for(int i=0; i<sira; i++)
                p=p->ileri;
            yeni->ileri=p->ileri;
            p->ileri=yeni;
        }
    }

    void sil(int sira)
    {
        int kacTane=elemanS();
        if(sira==0)
        {
            Eleman *gecici=bas;
            bas=bas->ileri;
            delete gecici;
        }
        else
        {
            Eleman *p=bas;
            for(int i=0; i<sira-1; i++)
                p=p->ileri;

            Eleman *silinecek=p->ileri;
            p->ileri=silinecek->ileri;
            if(silinecek->ileri==NULL) son=p; // Sondaysa
            delete silinecek;
        }
    }

    int elemanVer(int sira)
    {
        Eleman *p=bas;
        for(int i=0; i<sira; i++)
            p=p->ileri;
        return p->veri;
    }

    void tumElemanlar()
    {
        Eleman *p=bas;
        while(p!=NULL)
        {
            cout<<p->veri<<" ";
            p=p->ileri;
        }
        cout<<endl;
    }
};

int main()
{
    Liste li;
    for(int i=0; i<5; i++)
    {
        //Eleman e;
        //e.veri=i;
        //li.elemanEkle(&e);

        Eleman *e=new Eleman;
        e->veri=i*2;
        li.elemanEkle(e);
    }
    li.tumElemanlar();

    Eleman *yeni=new Eleman; yeni->veri=9;
    li.arayaEkle(yeni,2);

    li.sil(1);
    li.tumElemanlar();
}

Leave a Comment