// ************ Algoritma Uzmanı ************ // // *********www.Algoritma Uzmanı.com********* // #include <stdio.h> #include <stdbool.h> // düğüm ziyaret edilmediyse 1 edildiyse 2 #define initial 1 #define visited 2 // global değişkenleri tanımladık int dizi[5][5]; int state[5]; int yigin[5]; int top = -1; //yigin bos mu kontrolü bool stack_bos_mu() { if(top==-1) return 1; else return 0; } //yigin dolu mu kontrolü bool stack_dolu_mu() { if(top == 5) return 1; else return 0; } //yigina eleman ekleme fonksiyonu void push(int data) { if(stack_dolu_mu()) printf("\nStack Dolu"); else { top = top+1; yigin[top] = data; } } //yigindan eleman çıkarma fonksiyonu void pop() { if(stack_bos_mu()) printf("\nStack Bos!"); else { top = top-1; } } //ilk başta tüm düğümleri ziyaret edilmemiş //yani initial pozisyona getiriyoruz void hazirla() { int i; for(i=0;i<5;i++) { state[i] = initial; } } //Esas DFS fonksiyonumuz, parametre olarak başlangıç düğümü alıyor void dfs(int root) { int i; push(root); //başlangıç düğümü yığına ekleniyor state[root] = visited; //başlangıç düğümü ziyaret edildi olarak işaretlendi while(!stack_bos_mu()) //Döngümüz yığın boş olmadığı sürece dönecek { root = yigin[top]; //root değerine yığının top değerini atıyoruz printf("%d ", root); // ekrana çıktı veriyoruz pop();//yığından eleman çıkarıyoruz. for(i=0;i<5;i++) { if(state[i]!=visited) //ziyaret edilmemiş düğümleri yığına ekleyip ziyaret edildi yapıyoruz { state[i] = visited; push(i); } } } } void matrisOku(int dizi[5][5]) { int i; FILE *fp = fopen ("matris.txt", "r"); if (fp == NULL) { fprintf (stderr, "Dosya acilamadi\n"); return 255; } for (i = 0; fscanf (fp, "%d %d %d %d %d", &dizi[i][0], &dizi[i][1], &dizi[i][2], &dizi[i][3], &dizi[i][4]) != EOF && i < 5; ++i); fclose (fp); } void algoritmaUzmani(); int main() { int i, j, secim; int dizi[5][5]; matrisOku(dizi); hazirla(); printf("\n Kok dugumu girin (0 ve 4 dahil bir rakam girin)"); scanf("%d", &secim); dfs(secim); printf("\n ilgili konuya gitmek icin klavyeden 7 rakamına basin\n"); scanf("%d", &secim); if(secim == 7) algoritmaUzmani(); return 0; } //sadece ilgili konuya gitmek icin. diger kodlar ile ilgisi yok void algoritmaUzmani() { system("C:\\Progra~2\\Google\\Chrome\\Application\\chrome.exe http://www.algoritmauzmani.com/2016/10/dfs-algoritmasi-c-kodu-nasil-yazilir.html"); printf("\n Eger asagida sistem yolu hatasi aliyorsaniz bunu onemsemeyin"); if(system) { system("C:\\Progra~1\\Google\\Chrome\\Application\\chrome.exe http://www.algoritmauzmani.com/2016/10/dfs-algoritmasi-c-kodu-nasil-yazilir.html"); if(system) system("C:\\Progra~2\\Mozill~1\\firefox.exe http://www.algoritmauzmani.com/2016/10/dfs-algoritmasi-c-kodu-nasil-yazilir.html"); if(system) system("C:\\Progra~1\\Mozill~1\\firefox.exe http://www.algoritmauzmani.com/2016/10/dfs-algoritmasi-c-kodu-nasil-yazilir.html"); } }
Etiketler: dfs algoritması hazır c kodu, dfs algoritması iterative