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;

}



Adınız
Mail
Web Siteniz
Yorumunuz