Veri Yapıları ve Örnek C Kodları
13 Ocak 2011 Perşembe
Tek yonlu bağlantılı liste yapısında eklenen bilgiyi kucukten buyuğe sıralıyan c kodu
#include <iostream>
using namespace std;
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>//toupper için
//veri yapısı tanımlanır
typedef struct topluluk{
int bilgi;
char mesaj[100];
struct topluluk *arka;
}BLISTE;
BLISTE *ilk=NULL,*son=NULL;
BLISTE *oku_klavye();
int ekle(BLISTE *);
void yaz_ekrana(BLISTE *);
int listele();
int main()
{
BLISTE *eklenecek,*ki;
int bilgi,sonuc;
char secim;
while(1){
puts("\\nEkleme\\nListeleme\\nCIKIS\\nseciminiz ? \\n");
secim=toupper(getche());
switch (secim){
case ’E’:
eklenecek=oku_klavye();
if(eklenecek!=NULL)
ekle(eklenecek);
else
puts("eklemek için bellek dolu\\n ");
break;
case ’L’:
sonuc=listele();
if(sonuc==-1) puts("\\n liste bos");
break;
case ’C’:
case ’Q’:
puts(" hoscakal"); exit(0);
default :puts("\\n yanlis secim\\n ");
}
} //while icin
}
//kayit ekleme fonksiyonu
int ekle(BLISTE *ki)
{
BLISTE *p=ilk,*bironceki=NULL;
if(ilk==NULL){
ilk=ki;
son=ilk;
ilk->arka=NULL;
}
else{
if(ki->bilgi<=ilk->bilgi)
{
ki->arka=ilk;
ilk=ki;
}
else
{
while(p!=NULL)
{
if(ki->bilgi>=p->bilgi)
{
bironceki=p;
p=p->arka;
}
else break;
}
bironceki->arka=ki;
ki->arka=p;
}
}
return 0;
}
//****************listeleme fonksiyonu*******************************
int listele()
{
BLISTE *p;//yapı tipinde bi pointer tanımlanıyor
p=ilk; //ilk adresi atanıyor
if(p==NULL)
return -1;//listede eleman yok
while(p)//p NULL olana kadar doner
{
yaz_ekrana(p);
p=p->arka;
}
return 0;
}
void yaz_ekrana(BLISTE *yazilacak)
{
cout<<"\\nbilgi="<<yazilacak->bilgi<<" mesaj="<<yazilacak->mesaj<<"\\n";
}
BLISTE *oku_klavye()
{
BLISTE *okunan;
okunan=new BLISTE;
if(okunan==NULL)
return NULL;
cout<<"\\n bilgi giriniz"; cin>>okunan->bilgi;
cout<<"\\n mesaj giriniz";cin>>okunan->mesaj;
return okunan;
}
Etiketler :
Veri Yapıları C Ekleme Tek yönlü bağlantılı liste 
Kategoriler :
Programlama