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