Veriyapılarının Önemli konularından birisi olan Bağlı liste (linked list) üzerinde tüm işlemlerin gerçeklendiği bu makalemde bağlı listeye eleman ekleme eleman silme,eleman arama ve listenin herhangi bir yerine eleman eklemeyi göreceksiniz.

İŞTE EKLEME NİN MANTIĞI AŞAĞIDAKİ SİMULASYONDADIR.

SİLME MANTIĞI AŞAĞIDAKİ ANİMASYONDA GÖSTERİLMİŞTİR

Önceki hal Silinmemiş hal:

Son hali yani silinmiş hali:

#include<iostream>
using namespace std;

class dugum {
public:
dugum(){data=0,next=NULL;}

int data;
dugum *next;
};

class bagliste{
public:
bagliste();
void insertion(int);
void anywhere(int,int);
void deletion(int);
void yaz();
private:
int counter;
dugum *head;
};

bagliste::bagliste()
{
counter=0;
head=NULL;
}

void bagliste::insertion(int a)
{
dugum* pnew=new dugum;
pnew->data=a;
pnew->next=NULL;
dugum *tmp=head;

if(head==NULL)
head=pnew;
else
{
while(tmp->next!=NULL)
tmp=tmp->next;

tmp->next=pnew;
}
counter++;

}

void bagliste::anywhere(int i,int a)
{
dugum* pnew=new dugum;
pnew->data=a;
pnew->next=NULL;

dugum *p1=head;
dugum *p2;

for(int j=1;j<=i;j++){
p2=p1;
p1=p1->next;
}
pnew->next=p2->next;
p2->next=pnew;
counter++;

}

void bagliste::deletion(int k)
{
dugum *p1=head;
dugum *p2;

while(p1->data!=k&&p1->next!=NULL){
p2=p1;
p1=p1->next;

}
if(p1->data==k){
p2->next=p1->next;
delete p1;
counter–;
}
else
cout<<k<<” zaten listede yok\n”;
}

void bagliste::yaz()
{
dugum* p1=head;
while(p1!=NULL){
cout<<p1->data<<”  “;
p1=p1->next;

}
cout<<endl;

}

main()
{
bagliste B;
for(int i=0;i<20;i++)
B.insertion(i);
B.yaz();
B.anywhere(20,123);
B.yaz();
B.deletion(43);
B.yaz();
system (“pause”);
}

MEHMET SALİH DEVECİ

BİLGİSAYAR MÜHENDİSİ

Reklamlar
yorum
  1. anonnim dedi ki:

    c de yazabilirmisin?

  2. YAZILIM UZMANI dedi ki:

    C den Farkımı var bu kodun?? Class yapısının yerine Struct tanımla cout yerine de printf yazarsan olur sana C kodu…!!!

  3. hüseyin dedi ki:

    elamanları bağlantılı listede sıralı tutulan bir kümenin sıralı olma özelliğini bozmadan,bu kümeye elaman ekleyen bir c programı yaz
    soru
    bu lütfen bu msn adresine cvp atın

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      cevabı zaten yorum yazdığınız yazı da mevcuttur bunu DevC++ derleyicisiyle koşturduğunuzda görebilirsiniz…

  4. ada dedi ki:

    iyi günler ben bilgisayar mühendisliğinde okuyorum bi ödevim var ama yapamadm yardımcı olursanız çok sevinirim. ödevim şu: basamak sayısı çok büyük olan ve klavyeden girilecek 2 sayı için toplama işlemi yapabilen bir C programı yazmanız istenmektedir. program önce 1. sayıyı sonra 2. sayıyı almalı,sonra bu iki sayının toplamını ekranda göstermelidir.programda basamak sayısı istenildiği kadar büyük olabilmelidir.bu özelliği desteklemek için her sayıyı tek ya da iki yönlü bağlı listede saklayıp işlemleri uygun halde gerçekleştirmenz gerekmektedir.sayıları alırken kesinlikle basamak sayısı sorulmamalı ve her iki sayınında basamak sayısı farklı olmalıdır. bu ödevimi 8 temmuza kadar yapmak zorundayım. yardımlarınız için şimdiden çokk tşkler

  5. ada dedi ki:

    pardon 8 temmuz değil 8 ağustos olacaktı…

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Ada, Yazıda verilen kodda herhangi bir elemanın listeye eklenmesi gösterilmiştir.Bu şekilde istediğin değerleri istediğin formatta bu koda bir iki değişiklik yaparak elde edebilirsin…!!!

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s