Tek yönlü bağlı liste::
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
typedef struct liste{
int bilgi;
char mesaj[100];
struct liste *arka;
}sedat;
sedat *ilk=NULL,*son=NULL;
//fonksiyonlar.....
int Ekle(sedat *);
int Listele();
sedat *ara(int);
sedat *sil(int );
void yazEkrana(sedat*);
sedat *okuKlavyeden();
int _tmain(int argc, _TCHAR* argv[])
{sedat *eklenecek,*ki;
int bilgi,sonuc;
char secim;
while(1){
cout<<"Ekleme"<<endl<<"Listeleme"<<endl<<"Arama"<<endl<<"Silme"<<endl<<"Cikis"<<endl<<"Seciminiz";
cin>>secim;
switch(secim){
case 'E':eklenecek=okuKlavyeden();
if(eklenecek!=NULL)
Ekle(eklenecek);
else puts("Ekleme icin bellek dolu!");
break;
case 'L':sonuc=Listele();
if(sonuc==-1)
puts("boş liste!");
break;
case 'A':puts("aranan:"); cin>>bilgi;
ki=ara(bilgi);
if(ki==NULL)
puts("arama bulunamadi");
else
yazEkrana(ki);
break;
case 'S':puts("silinecek:"); cin>>bilgi;
ki=sil(bilgi);
if(ki!=NULL)
puts("silindi");
else
puts("silinmek istenen yok");
break;
case 'Ç':
case 'ç':
case 'c':
case 'C': puts("hoscakal!");
default: puts("yanlış seçim!!!:");
}
}
getch();
return 0;
}
// ekle fonksiyonu---
int Ekle(sedat *ki){
if(ilk!=NULL){
son->arka=ki;
son=ki;
son->arka=NULL;
}
else{
ilk=ki;
son=ilk;
son->arka=NULL;
}
return 0;
}
//--Listeleme(Ekrana yazma) fonksiyonu
int Listele(){
sedat *p;
p=ilk;
if(p==NULL) return -1; //liste boş.
while(p){
yazEkrana(p);
p=p->arka;
}
return 0; //listeleme yapıldı..
}
//---arama fonksiyonu...
sedat *ara(int aranan){
sedat *p;
p=ilk;
while(p){
if(p->bilgi==aranan)
return p; //arananı bulur adresini döndürür.
p=p->arka;
}
return NULL;//bulunmamışsa NULL döndürür.
}
// silme fonksiyomu..
sedat *sil(int silinecek){
sedat *p,*bironceki;
p=ilk;
bironceki=NULL;
while(p){
if(silinecek=p->bilgi)
break;
bironceki=p;
p=p->arka;
}
if(p!=NULL){
if(bironceki==NULL){
if(ilk==son){
ilk=NULL;
son=NULL;
}
else ilk=ilk->arka;
}
else {
bironceki->arka=p->arka;
if(bironceki->arka==NULL)
son=bironceki;
}
free(p);
return p;
}
else
return NULL;
}
//listeyi ekrana yazdıran fonksiyon
void yazEkrana(sedat *yazilacak){
cout<<"bilgi:"<<yazilacak->bilgi<<" "<<"mesaj:"<<yazilacak->mesaj<<endl;
}
//bilgileri alan fonksiyon
sedat *okuKlavyeden(){
sedat *okunan;
okunan=new sedat();
if(okunan==NULL) return NULL;
puts("bilgi giriniz:");
cin>>okunan->bilgi;
puts("mesaji girin:");
cin>>okunan->mesaj;
return okunan;
}
//----------------------------------------------