You need to enable JavaScript to run this app.

Skip to main content

veri yapıları- bağlı liste yapısı(struct connected list)(tek yönlü)

veri yapıları- bağlı liste yapısı(struct connected list)(tek yönlü)

Posting Freak
veri yapıları- bağlı liste yapısı(struct connected list)(tek yönlü)
program malloc sizeof methoduyla dinamik bir hafıza oluşturup gelen bilgiyi tek yönlü bağlantılı liste oluşturarak listeye yazıyor program ayrıca silme ve listeleme işlemlerini de yapabiliyor.
program tek yönlü olduğu için ilk operand ve son operand birbirlerine bağlı ve program listeyi dolaşırken ve silme yaparken bu yuvarlak yapıdaki bağlantısı sayesinde işlemleri gerçekleştirebiliyor.


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>

typedef struct ogrencibagli_liste{
int no;
char ad[20];
char soyadi[20];

struct ogrencibagli_liste *sonraki;
}bagli_liste;

bagli_liste *ilk=NULL,*son=NULL;

int ekle(bagli_liste *,int);
void listele();
int kayit_sil(int);

void main(){
int ogrno;
bagli_liste *bilgi;
while(1){
char sec;
sec=getchar();

puts("\n a:ekleme\nl:listeleme\nsConfusedilme\nc:cilis");
switch(sec){

case'e':
bilgi=(bagli_liste*)malloc(sizeof(bagli_liste));
puts("\nad\nsoyad\nno giriniz...");
scanf("%s",&bilgi->ad);
scanf("%s",&bilgi->soyadi);
scanf("%d,&bilgi->no");
ekle(bilgi,bilgi->no);

break;

case'l':
if(ilk!=NULL)
{
printf("\ntum kayıtlar bagli listeleniyor");
listele();
}
else printf("\nliste bos");
break;
case's':
if(ilk!=NULL){
printf("ogrencinin tum kaytıtlarını silmek icin silinecek ogrenci no sunu giriniz..\n");
scanf("%d",&ogrno);
kayit_sil(ogrno);
}
else{printf("listede kayıt yok\n");}
break;

case'c':
printf("cikis\n");
exit(1); //break;
}
}
}



int ekle(bagli_liste *bilgi,int sayi){
bagli_liste *search,*sontut;
int araci=0;
if(ilk==NULL){
ilk=bilgi;
son=ilk;
sontut=son;
son->sonraki=ilk;
}
else{
sontut=son;
son->sonraki=bilgi;
son=bilgi;
son->sonraki=ilk;
araci=1;
search=ilk;
if(araci==1){
if(search->no==sayi){
sontut->sonraki=ilk; son=sontut;
printf("ayni numara tekrari\n");
while(search->sonraki!=ilk){
if(sayi==search->no){sontut->sonraki=ilk;
son=sontut;
printf("aynı numara tekrari\n"); return 0;}
search=search->sonraki;}
} return 0;}




void listele(){
bagli_liste *gecici,*bironceki;
int sayac=1;
gecici=ilk;
if(gecici==ilk) {

printf("\n sira\n ogr_no\nogr_isim\nogrenci_soyisim ");
printf("\n %d \n %d \n %s \n %s\n" sayac,gecici->no,gecici->ad,gecici->soyadi);
sayac++;
gecici=gecici->sonraki;}

while(gecici!=ilk){
printf("%d\n%d\n%s\n%s\n",sayac,gecici->no,gecici->soyadi);
sayac++;
gecici=gecici->sonraki;}

printf("tum kayitlar listelendi\n");

}




int kayit_sil(int number){

bagli_liste *bironceki,*gecici,*araci;
if(ilk->no==number){
if(ilk==son){
ilk=NULL;
son=NULL;}
else{
ilk=ilk->sonraki;
son->sonraki=ilk; }
}

araci=ilk;
gecici=ilk->sonraki;
while(gecici!=ilk){ //en az iki kayıt için..

//kayıtlar içinde numara eşit olmadığında

if(gecici->no==number){
if(gecici!=son){
araci->sonraki=gecici->sonraki;
break;}
else{
araci->sonraki=ilk;
son=araci;
son->sonraki=ilk;
break;
}
}

else{
araci=araci->sonraki;
gecici=gecici->sonraki;
}

}
[Resim: 114ld.jpg]



Ben göremem daha uzun boyunu
Ahret derler kısaltamam yolunu
Bugün Sahı Merdan sarsın oglunu
Yetis Ya Üseyin baban gidiyo

İçerik sağlayıcı paylaşım sitesi olarak hizmet veren Pir Zöhre Ana Forum sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.K'nın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Sitemiz hakkında yapılacak tüm hukuksal şikayetleri İletişim bağlantısından bize ulaşıldıktan en geç 3 (üç) gün içerisinde ilgili kanunlar ve yönetmenlikler çerçevesinde tarafımızca incelenerek, gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.