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

                                                         İki Yönlü Linked List

#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;

#define tusaVur cout<<"Devam icin H. tusuna bas"<<endl;  getch();

typedef struct liste{
int bilgi;
char mesaj[100];
struct liste *on;
struct liste *arka;
}sedat;

sedat *ilk=NULL,*son=NULL;

//fonksiyonlar
int Ekle(sedat *);
int Listele();
sedat *Arama(int );
sedat *Silme(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=Arama(bilgi);
     if(ki==NULL)
      puts("arama bulunamadi");
     else
      yazEkrana(ki);
     break;
     case 'S':puts("silinecek:");  cin>>bilgi;
          ki=Silme(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;
}
//ekleme fonksiyonu
int Ekle(sedat *ki){
 if(ilk!=NULL){
  son->arka=ki;
  ki->on=son;
  son=ki;
  son->arka=NULL;
              }
 else {
     ilk=ki;
  son=ki;
  ilk->arka=NULL;
  ilk->on=NULL;
      }
 return 0;
}   
 
//listeleme yazdırma fonksiyonu.
int Listele(){
sedat *p;
p=ilk;
if(p==NULL) return -1;
while(p!=NULL){
              yazEkrana(p);
     p=p->arka;
     tusaVur;  //hersatirda tuşa vurulmasını istiyor.
              }
    return 0;
}
//arama fonksiyonu...
sedat *Arama(int aranan){
sedat *p;
p=ilk;
while(p){
 if(aranan==p->bilgi)
  return p;
 p=p->arka;
         }
return NULL;
}
//...silme fonksiyonu.....
sedat *Silme(int silinecek){
sedat *p;
p=Arama(silinecek);
 if(p==NULL)
  return NULL;
 if(ilk==p){
  if(ilk->arka!=NULL){
   ilk=p->arka;
   ilk->on=NULL;
                      }
  else {
    ilk=NULL;
    son=NULL;
      }                   
           }
 else{
  p->on->arka=p->arka;
  if(p=son)
   son=son->on;
  else
   p->arka->on=p->on;

  }
 free(p);
 return p;
 }
//ekrama yazdırır...
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 22 ziyaretçi (94 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