Tek Yönlü Bağlı Listeler

Bir liste elemanı kendi değerinin yanında bir de sonraki elemana işaret eden bir adres değişkeni içeren bir karmaşık değişken olarak tanımlanmış olmalıdır. C++ dilinde tamsayı değerli bir bağlantılı liste elemanı “struct” adı verilen değişken yapısıyla aşağıdaki gibi tanımlanabilir:

struct eleman
{
int Deger;
struct eleman *pSonraki;
}

#include “stdafx.h”
#include <iostream>
using namespace std;

struct liste
{
int bilgi;
struct liste *link;
};
typedef struct liste list;
list * liste Baslat(int bilgi);
list * elemanOlustur(int yeni_bilgi);
int listeUzunlugu(list *p);
list * basaEkle(list *p, list * yeni_eleman);
void * sonaEkle(list *p, list * yeni_eleman);
void * arayaEkle(list *p, list * yeni_eleman);
void * arayaEkle(list *p, list * yeni_eleman);
list * elemanCıkar(list *p, list * cikan_eleman);
int listeBosMu(list *p);
list * iElemanBul(list *p, int i);
int main()
{

cin.get();
}// main sonu

list * liste Baslat(int bilgi)
{
list *m = (list *)malloc(sizeof(list));
m->link = ”;
m->bilgi = bilgi;
return m;
} // listeBaslat sonu
int * listeUzunlugu(list *p)
{
int i = 1;
list *t = p;
if(t == ”)
{
cout << “Hata! Liste yok\n”;
return -32767;
}
while(t->link != ”)
{
i++;
t = t->link;
}
return i;
}//listeUzunlugu sonu

list * elemanOlustur(int yeni_bilgi)
{
list *eleman = (list *)malloc(sizeof(list));
eleman->bilgi = yeni_bilgi;
eleman->link = ”;
return eleman;
}// eleman olustur sonu
list * basaEkle(list *p, list * yeni_eleman)
{
if(p == ” || yeni_eleman == ”)
{
cout << “hata !! Liste ya da ekelenecek eleman yok\n”;
return p;
}
}// basa ekle sonu
list * sonaEkle(list *p, list * yeni_eleman)
{
list *t = p;
if(t == ” || yeni_eleman == ”)
{
cout << “hata !! Liste ya da ekelenecek eleman yok\n”;
}
else
{
while(t->link != ”)
{
t = t->link;
t->link = yeni_eleman;
}
}
return t;
}// sona ekle sonu
list * arayaEkle(list *p, list * yeni_eleman)
{
if(p == ” || yeni_eleman == ”)
{
cout << “hata !! elemanlardan biri tanımlı değil\n”;
}
else
{
yeni_eleman->link = p->link;
p->link = yeni_eleman;
}
}// araya ekle sonu
list * iElemanBul(list *p, int i)
{
int sira_no = 1;
list *t = p;
if(t == ”)
{
cout << “Hata! Liste tanımlı değil\n”;
return ”;
}
while(t->link != ”)
{
t = t->link;
t->link = yeni_eleman;
}
return t;
}// iElemanBul sonu
list * elemanCıkar(list *p, list * cikan_eleman)
{
list *t = p;
if(cikan_eleman == ” || t == ”)
cout << “Hata! Liste veya cıkacak eleman yok\n”;
else
{
if(t == cikan_eleman)
{
t = t->link;
return t;
}
else
{
while(t->link != cikan_eleman)
{
t = t->link;
if(t == ”)break;
}
if (t == ”)
{
cout << “cıkacak eleman listede yok\n”;
return p;
}
if(t->link == cikan_eleman)
{
t->link = cikan_eleman->link;
free(cikan_eleman);
return p;
}
}
}
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s