Çift Yönlü Bağlantılı Liste Veri Yapısı Örneği C++

Çift Yönlü Bağlantılı Liste Veri Yapısı Örneği C++

Mat&Geo Soru Paylaşım 📚🧮✏ Matematik geometri, whatsapp, soru paylaşım grubu

Belirsiz sayıdaki bir öğrenci grubu için çift yönlü bağlantılı liste yapısı oluşturunuz.Listede öğrencilerin adı, numarası, vizesi, finali ve ortalması mecuttur.

a)Listeye eleman ekleyen

b)Adın alfabetik sırasına göre araya ekleyen

c)Listenin ad ve ortalama kısmınıbir diziye aktarıp diziyi ortalaması yüksek olandan düşük olana doğru sıralayan

d)Listeyi görüntüleyen

e)Numaraya göre eleman silen

bir C++ programı yazınız. 

#include<stdio.h> #include<stdlib.h> #include<string.h> struct dllist
{
int no,vize,final;
float gn;
char kelime[20];
struct dllist *on,*arka;

};
struct dllist2
{

float not;
char ad[20];

};

 static dllist *bas,*son;

 void elemanekle(struct dllist *ct)
{

struct dllist *p;

if(bas==NULL)
{
bas=ct;
ct->arka=NULL;
ct->on=NULL;
return;
}
else
for(p=bas;p->arka!=NULL;p=p->arka);
p->arka=ct;
ct->on=p;
ct->arka=NULL;

}

 

void listele()
{
struct dllist *p;
p=bas;int s=0;
do
{
 s++;
printf("%d. eleman \n ad:%s \n",s,p->kelime);
printf(" no: %d \n",p->no);
printf(" vize: %d \n",p->vize);
printf(" final: %d \n",p->final);
printf(" ortalama: %f \n",p->gn);
p=p->arka;

}while(p!=NULL);

}
 

void notsirala()
{
struct dllist *q;
struct dllist2 not[50],noty;
int r=0,i,j;

for(q=bas;q!=NULL;q=q->arka)
{
r++;
strcpy(not[r].ad,q->kelime);
not[r].not=q->gn;
}

for(i=1;i<=r;i++)
for(j=i+1;j<=r;j++)

if(not[i].not<not[j].not)
{
noty=not[i];
not[i]=not[j];
not[j]=noty;
}

for(i=1;i<=r;i++)
{
printf("%d. eleman\n ad:%s\n",i,not[i].ad);
printf("not:%f",not[i].not);

}
 

void arayaekle(struct dllist *p)
{
struct dllist *q,*once;

 if(bas==NULL)
 {
  bas=p;
p->arka=NULL;
p->on=NULL;
return;
}

for(q=bas;q!=NULL;q=q->arka)

 if(strcmp(p->kelime,q->kelime)==-1)
 {once=q->on;
  break;
 }

 if(q->on!=NULL&&q->arka!=NULL)
 {
 
 p->on=once;
 p->arka=q;
 q->on=p;
 once->arka=p;
 return;
  }

if(q->on==NULL)
 {
 q->on=p;
 p->on=NULL;
 p->arka=q;
 bas=p;return;
 }
 if(q->arka==NULL)
 {
 q->arka=p;
 p->arka=NULL;
 p->on=son;
 son=p;return;
 }
 }

 
void sil(int e)
{
struct dllist *ogr;
for(ogr=bas;ogr->arka==NULL;ogr=ogr->arka)
if(ogr->no==e)
break;
if(ogr->on==NULL)
bas=ogr->arka;
else if(ogr->arka==NULL)
ogr->on->arka=NULL;
else
{
ogr->on->arka=ogr->arka;
ogr->arka->on=ogr->on;
}

 
 

void main()
{
int sec,a;
float ort;
struct dllist *m;
do
{

      printf("\n 1. eleman ekle");
      printf("\n 2. listele");
      printf("\n 3. ada göre sıralı ekle");
    printf("\n 4. ortalamaya göre sırala");
    printf("\n 5. Numaraya göre eleman silme");
 
      printf("\n 6. ‡kŸ");
      printf("\nseciminiz: ");
      scanf("%d", &sec);
   switch(sec)

   {
  
   case 1:
    m=(struct dllist *)malloc(sizeof(dllist));
    printf("ad giriniz: ");
    scanf("%s",&m->kelime);
    printf("no giriniz: ");
    scanf("%d",&m->no);
      printf("vize giriniz: ");
    scanf("%d",&m->vize);
      printf("final giriniz: ");
    scanf("%d",&m->final);
ort=float(0.4*m->vize+0.6*m->final);
    m->gn=ort;
    elemanekle(m);
    break;
   case 2:
    listele();
    break;
  
   case 3:
    m=(struct dllist *)malloc(sizeof(dllist));
    printf("ad giriniz: ");
    scanf("%s",&m->kelime);
    printf("no giriniz: ");
    scanf("%d",&m->no);
      printf("vize giriniz: ");
    scanf("%d",&m->vize);
      printf("final giriniz: ");
    scanf("%d",&m->final);
    ort=float(0.4*m->vize+0.6*m->final);
    m->gn=ort;
    arayaekle(m);
    break;
   case 4:
    notsirala();
    break;
   case 5:
    printf("\nKaydını silmek istediğiniz öğrencinin numarasını giriniz");
    scanf("%d",&a);
   sil(a);
   case 6:exit(0);
  
   }
}while(1);
}


Yorumlar10

...
ishak YAVUZER29.04.2013

 programda not diye değişken tanımlanmış, not diye değişken tanımlanamaz.. başka da bi sıkıntı yok.. not kelimesini notu diye değiştirin çalışır... 


Cevapla
...
Fatih Tit...23.01.2013

Derleyici kaynaklı bir hata. Öğrenci arkadaşlarımıza yardımcı olsun diye hatayı düzeltip tekrar koyuyorum.

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct dllist
{
int no,vize,final;
float gn;
char kelime[20];
struct dllist *on,*arka;

};
struct dllist2
{

float notu;
char ad[20];

};

 static dllist *bas,*son;

 void elemanekle(struct dllist *ct)
{

struct dllist *p;

if(bas==NULL)
{
bas=ct;
ct->arka=NULL;
ct->on=NULL;
return;
}
else
for(p=bas;p->arka!=NULL;p=p->arka);
p->arka=ct;
ct->on=p;
ct->arka=NULL;

}

 

void listele()
{
struct dllist *p;
p=bas;int s=0;
do
{
 s++;
printf("%d. eleman \n ad:%s \n",s,p->kelime);
printf(" no: %d \n",p->no);
printf(" vize: %d \n",p->vize);
printf(" final: %d \n",p->final);
printf(" ortalama: %f \n",p->gn);
p=p->arka;

}while(p!=NULL);

}
 

void notsirala()
{
struct dllist *q;
struct dllist2 notu[50],noty;
int r=0,i,j;

for(q=bas;q!=NULL;q=q->arka)
{
r++;
strcpy(notu[r].ad,q->kelime);
notu[r].notu=q->gn;
}

for(i=1;i<=r;i++)
for(j=i+1;j<=r;j++)

if(notu[i].notu<notu[j].notu)
{
noty=notu[i];
notu[i]=notu[j];
notu[j]=noty;
}

for(i=1;i<=r;i++)
{
printf("%d. eleman\n ad:%s\n",i,notu[i].ad);
printf("notu:%f",notu[i].notu);

}

}
 

void arayaekle(struct dllist *p)
{
struct dllist *q,*once;

 if(bas==NULL)
 {
  bas=p;
p->arka=NULL;
p->on=NULL;
return;
}

for(q=bas;q!=NULL;q=q->arka)

 if(strcmp(p->kelime,q->kelime)==-1)
 {once=q->on;
  break;
 }

 if(q->on!=NULL&&q->arka!=NULL)
 {
 
 p->on=once;
 p->arka=q;
 q->on=p;
 once->arka=p;
 return;
  }

if(q->on==NULL)
 {
 q->on=p;
 p->on=NULL;
 p->arka=q;
 bas=p;return;
 }
 if(q->arka==NULL)
 {
 q->arka=p;
 p->arka=NULL;
 p->on=son;
 son=p;return;
 }
 }

 
void sil(int e)
{
struct dllist *ogr;
for(ogr=bas;ogr->arka==NULL;ogr=ogr->arka)
if(ogr->no==e)
break;
if(ogr->on==NULL)
bas=ogr->arka;
else if(ogr->arka==NULL)
ogr->on->arka=NULL;
else
{
ogr->on->arka=ogr->arka;
ogr->arka->on=ogr->on;
}
}
 
 

int main()
{
int sec,a;
float ort;
struct dllist *m;
do
{

      printf("\n 1. eleman ekle");
      printf("\n 2. listele");
      printf("\n 3. ada göre sıralı ekle");
    printf("\n 4. ortalamaya göre sırala");
    printf("\n 5. Numaraya göre eleman silme");
 
      printf("\n 6. ‡?k?Ÿ");
      printf("\nseciminiz: ");
      scanf("%d", &sec);
   switch(sec)

   {
 
   case 1:
    m=(struct dllist *)malloc(sizeof(dllist));
    printf("ad giriniz: ");
    scanf("%s",&m->kelime);
    printf("no giriniz: ");
    scanf("%d",&m->no);
      printf("vize giriniz: ");
    scanf("%d",&m->vize);
      printf("final giriniz: ");
    scanf("%d",&m->final);
ort=float(0.4*m->vize+0.6*m->final);
    m->gn=ort;
    elemanekle(m);
    break;
   case 2:
    listele();
    break;
 
   case 3:
    m=(struct dllist *)malloc(sizeof(dllist));
    printf("ad giriniz: ");
    scanf("%s",&m->kelime);
    printf("no giriniz: ");
    scanf("%d",&m->no);
      printf("vize giriniz: ");
    scanf("%d",&m->vize);
      printf("final giriniz: ");
    scanf("%d",&m->final);
    ort=float(0.4*m->vize+0.6*m->final);
    m->gn=ort;
    arayaekle(m);
    break;
   case 4:
    notsirala();
    break;
   case 5:
    printf("\nKaydını silmek istediğiniz öğrencinin numarasını giriniz");
    scanf("%d",&a);
   sil(a);
   case 6:exit(0);
 
   }
}while(1);
}


Cevapla
...
kodcu baba10.12.2012

hele o hata yok diyen kim allah için beri gelsin ..  kardeş nasıl  hata yok , her türlü derlemeye çalıştığımda hata veriyor ,  kullandığım derleyici dev c pp  .. siz hangi derleyiciyi kullanıyorsunuz da hata almıyorsunuz ?


Cevapla
...
dogukan06.12.2012

bkz. google/C/C++ complier mingw

mingw ile dosya uzantıalrını .cpp ve .hpp(veya .h) olarak bir klasöre kaydedersiniz ve indirdiğiniz mingw derleyici ile derleme işlemini (cmd - dos üzerinden) pekala yapabilirsiniz karşılaşacağınız en ağla problem de makefile dosyası hazırlamak olabilir...

bkz. google/ makefile dosyası oluşturma


Cevapla
...
efe kaya29.11.2012

bu kodlari .c uzantili nasil duzenleyip calistirabilirz


Cevapla
...
Baris Cakir02.06.2012

Kod hatasız çalışmaktadır.Eğer bir hata alıyorsanız bu büyük bir olasılıkla sizin derleyicinizden kaynaklanmaktadır.


Cevapla
...
Deniz Tanır16.11.2011

Az önce kodları koplayalayıp yeni bir C++ source file ına yapıştırdım ve compile ettim gayet sorunsuz çalışıyor. Nasıl bir hata alıyorsunuz. Paylaşabilir misiniz?


Cevapla
...
elif gökçe16.11.2011

bende hala hata veriyor


Cevapla
...
Deniz Tanır04.01.2011

Uyardığınız için teşekkür ederim.Hatayı düzelttim.Artık sorunsuz çalışıyor...


Cevapla
...
Ali Kara04.01.2011

teşekkür ederim ama kodları çalıştırmaya çalıştığımda hata veriyor.


Cevapla

Yorumlarınızı Bekliyoruz

Yorum Yazın

Yorum