Created
November 29, 2012 17:01
-
-
Save CaglarGonul/4170395 to your computer and use it in GitHub Desktop.
Linked List Resembled as a Tree
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
typedef char* STRING; | |
typedef struct ListeElemani ListeElemani; | |
typedef struct { | |
ListeElemani *ListeBasi; | |
} Liste; | |
struct ListeElemani { | |
STRING deger; | |
Liste* iliskiler; | |
ListeElemani *sonraki; | |
}; | |
Liste *yapListe( ); | |
void basaEkleListe(Liste *gL, char* X); | |
void sonaEkleListe(Liste *gL, char* X); | |
STRING silBastanListe(Liste *gL); | |
STRING silSondanListe(Liste *gL); | |
void yazdirListe(Liste *gL); | |
int bosListe(Liste *gL); | |
int uzunlukListe(Liste *gL); | |
ListeElemani *nciElemanListe(Liste *gL, int n); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include "listeprot.h" | |
#include <string.h> | |
Liste *yapListe( ){ | |
Liste *tL= (Liste *)malloc(sizeof(Liste)); | |
tL->ListeBasi= (ListeElemani *) 0; // null gostergec | |
return tL; | |
} | |
void basaEkleListe(Liste *gL, STRING X){ | |
ListeElemani *tLE= (ListeElemani *)malloc(sizeof(ListeElemani)); | |
tLE->deger= X; | |
tLE->sonraki= gL->ListeBasi; | |
gL->ListeBasi= tLE; | |
} | |
void sonaEkleListe(Liste *gL, STRING X){ | |
ListeElemani *tLE= (ListeElemani *)malloc(sizeof(ListeElemani)); | |
ListeElemani *t; | |
tLE->deger= X; | |
tLE->sonraki= (ListeElemani *) 0; | |
if(bosListe(gL)) {//Liste zaten bos | |
gL->ListeBasi= tLE; | |
return; | |
} | |
for(t= gL->ListeBasi;t->sonraki!=0; t= t->sonraki); // Listenin en sonuna git | |
t->sonraki= tLE; | |
} | |
STRING silBastanListe(Liste *gL){ | |
ListeElemani *tLE; | |
char* X; | |
if(bosListe(gL)){ | |
printf("Liste bos, silme yapilamadi\n"); | |
return NULL; | |
} | |
X= gL->ListeBasi->deger; | |
tLE= gL->ListeBasi->sonraki; | |
free(gL->ListeBasi); // Bu liste elemanini bellekten sil | |
gL->ListeBasi= tLE; | |
return X; | |
} | |
STRING silSondanListe(Liste *gL){ | |
ListeElemani *t, *tonceki; | |
char* X; | |
if(bosListe(gL)) {// Liste bos | |
printf("Liste bos, silme yapilamadi\n"); | |
return NULL; | |
} | |
tonceki= (ListeElemani *)0; | |
for(t= gL->ListeBasi;t->sonraki!=0; t= t->sonraki) // Listenin en sonuna git | |
tonceki= t; | |
X= t->deger; | |
if(tonceki!=0) tonceki->sonraki= 0; | |
else gL->ListeBasi= (ListeElemani *)0; | |
return X; | |
} | |
void yazdirListe(Liste *gL){ | |
ListeElemani *t; | |
if(bosListe(gL)) {printf("Liste bos\n"); return;} | |
for(t= gL->ListeBasi; t!=0; t=t->sonraki) | |
if(t!=0) printf("%s ", t->deger); | |
printf("\n"); | |
} | |
int bosListe(Liste *gL){ | |
return gL->ListeBasi == 0; | |
} | |
int uzunlukListe(Liste *gL){ | |
ListeElemani *t; | |
int sayac=0; | |
if(bosListe(gL)) return 0; | |
for(t= gL->ListeBasi; t!=0; t=t->sonraki) | |
if(t!=0) sayac++; | |
return sayac; | |
} | |
ListeElemani *nciElemanListe(Liste *gL, int n){ | |
ListeElemani *t; | |
if(bosListe(gL)) return 0; | |
if(uzunlukListe(gL)<n) return 0; | |
for(t= gL->ListeBasi; n!=1; t=t->sonraki) | |
n--; | |
return t; | |
} | |
ListeElemani *elemanAra(Liste *LX,STRING X){ | |
ListeElemani *t; | |
for(t= LX->ListeBasi;t!=0;t= t->sonraki){ | |
if(strcmp(t->deger,X)==0){ | |
return t; | |
} | |
} | |
return NULL; | |
} | |
int main() | |
{ | |
Liste* Liste1; Liste* Liste2; | |
Liste1 = yapListe();Liste2 = yapListe(); | |
sonaEkleListe(Liste1,"Programlama");sonaEkleListe(Liste1,"Veri Tabanları");sonaEkleListe(Liste1,"Yapay Zeka"); | |
sonaEkleListe(Liste2,"Ahmet");sonaEkleListe(Liste2,"Ali");sonaEkleListe(Liste2,"Ayşe"); | |
elemanAra(Liste1,"Programlama")->iliskiler = yapListe(); elemanAra(Liste1,"Veri Tabanları")->iliskiler = yapListe(); | |
elemanAra(Liste1,"Yapay Zeka")->iliskiler = yapListe(); | |
elemanAra(Liste2,"Ahmet")->iliskiler = yapListe();elemanAra(Liste2,"Ali")->iliskiler = yapListe(); | |
elemanAra(Liste2,"Ayşe")->iliskiler = yapListe(); | |
sonaEkleListe(elemanAra(Liste1,"Programlama")->iliskiler,"Ahmet"); | |
sonaEkleListe(elemanAra(Liste1,"Programlama")->iliskiler,"Ali"); | |
sonaEkleListe(elemanAra(Liste1,"Veri Tabanları")->iliskiler,"Ali"); | |
sonaEkleListe(elemanAra(Liste1,"Yapay Zeka")->iliskiler,"Ayşe"); | |
sonaEkleListe(elemanAra(Liste2,"Ahmet")->iliskiler,"Programlama"); | |
sonaEkleListe(elemanAra(Liste2,"Ali")->iliskiler,"Programlama"); | |
sonaEkleListe(elemanAra(Liste2,"Ali")->iliskiler,"Veri Tabanları"); | |
sonaEkleListe(elemanAra(Liste2,"Ayşe")->iliskiler,"Yapay Zeka"); | |
printf("Ahmetin aldığı dersler : "); | |
yazdirListe(elemanAra(Liste2,"Ahmet")->iliskiler); | |
printf("Programlama dersini alan öğrenciler : "); | |
yazdirListe(elemanAra(Liste1,"Programlama")->iliskiler); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment