C Programlama Dili Çift Yönlü Kuyruk Yapısı
C programlama dili çift yönlü kuyruk yapısını örnek ile açıklayacağız. Bu kuyruk yapısında çift yönlü bağlı liste kullanılmıştır. C Programlama Dili Tek Yönlü Kuyruk Yapısı isimli konuda kuyrukla ilgili açıklamalar yapılmıştır. Bu konuda farklı olarak yapılar çift yönlü bağlı listeye göre değiştirilmiştir. Aynı yapı bağlı liste yerine kolayca diziler ile de yapılabilir. Ama dinamiklik önemli olduğunda bağlı liste kullanılmalıdır.
C Programlama Dili Çift Yönlü Kuyruk Yapısı
Örnek Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
#include <stdio.h> #include <stdlib.h> #define limit 200 typedef struct KUYRUK { int sayi; struct KUYRUK *onceki, *sonraki; } kuyruk; kuyruk *ilk = NULL, *son, *yeni, *sil; void menu(); void ekle(int); void cikar(); void bekle(); void listele(); void ekranTemizle(); int main() { while (1) { menu(); } return 0; } void menu() { int sayi; printf("******Menu******\n"); printf("1)Ekle\n"); printf("2)Cikar\n"); printf("3)Listele\n"); printf("4)Cikis\n"); int secenek; printf("Tercih: "); scanf("%d", &secenek); ekranTemizle(); switch (secenek) { case 1: printf("Sayi giriniz: "); scanf("%d", &sayi); ekle(sayi); break; case 2: cikar(); break; case 3: listele(); break; case 4: printf("Program Sonlandirildi!\n"); exit(0); break; default: printf("Hatali Secim!\n"); } bekle(); } void ekle(int sayi) { yeni = (kuyruk*) malloc(sizeof (kuyruk)); yeni->sayi = sayi; yeni->sonraki = NULL; if (ilk == NULL) { ilk = (kuyruk *) malloc(sizeof (kuyruk)); yeni->onceki = NULL; ilk = yeni; son = ilk; } else { son->sonraki = yeni; yeni->onceki = son; son = son->sonraki; } } void cikar() { if (ilk == NULL) { printf("Kuyruk bos\n"); } else { sil = (kuyruk*) malloc(sizeof (kuyruk)); sil = ilk; ilk = ilk->sonraki; printf("%d Kuyruktan cikarildi\n", sil->sayi); free(sil); } } void listele() { if (ilk == NULL) { printf("Kuyruk Bos\n"); } else { kuyruk *gecici = ilk; while (gecici != NULL) { printf("%d ", gecici->sayi); gecici = gecici->sonraki; } printf("\n"); } } void ekranTemizle() { //windows icin system("cls"); //linux icin //system("clear"); } void bekle() { printf("Devam etmek icin Enter'a basiniz!\n"); //klavyeden okuma atlamasinin onune gecmek icin 2 kere yazildi getchar(); getchar(); ekranTemizle(); } |
C Programlama Dili Tek Yönlü Kuyruk Yapısı isimli konudaki tüm fonksiyonlar kullanılmıştır. Tek yönlü kuyruk yapısından farklı olarak ekle ve cikar fonksiyonları değiştirilmiştir. Bu fonksiyonlarda onceki pointer’ı sayesinde node’lara önceki node’larda bağlanmıştır. Ayrıca çift yönlü bağlı liste örnek ve açıklamaları için Veri Yapıları – Çift Yönlü Bağlı Liste kategorisini inceleyebilirsiniz.
Leave a reply
Lütfen yorum için giriş yap ve yakayıt ol Teşekkürler .