Sedat DURMUŞ ve Programlama Sanatı
sedatdurmuscomputereng  
 
  Tek yönlü linked list 14.03.2025 16:21 (UTC)
   
 

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;
}
//----------------------------------------------

 

 

 

 

 

 


 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INFOMELDUNG_LOGINBOX
Bugün 23 ziyaretçi (95 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol