Skip to content

Instantly share code, notes, and snippets.

@CaglarGonul
Created November 29, 2012 17:01
Show Gist options
  • Save CaglarGonul/4170395 to your computer and use it in GitHub Desktop.
Save CaglarGonul/4170395 to your computer and use it in GitHub Desktop.
Linked List Resembled as a Tree
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);
#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