Genel Bilgi|  Program Kontrol|  Fonksiyonlar|  Arrayler |  Pointerlar |  Link List |  String| Structurelar |  Input/Output| Yeni Baslayanlar |  Email|

TurkceC yi Ara
  
Genel Bilgi
Tek Gonderim Yapilari
Dinamik Hafiza Ayirma
Link List
Stackler
Queues
Trees Calismasi

STACKLER
Bir stack baglanmis listelerin bir zoraki versiyonudur.Yeni nodlar stacklere yanlizca stacklerin en ustunden baslama sarti ile eklenebilir ve cikarilabilirler. Bu nedenle stack last-in, first-out(LIFO)(En son iceri, en ilk disari) olarak bilinir. Bir stackte ki nodun en sonda ki baglanti uyesi stackin en sonunu gostermek amaci ile NULL a kurulur.
Link list ve Stackler arasinda ki fark: ekleme ve cikarma islemi link liste herhangi bir yerde yapilabilir ama stackde ise islemin en basindan yapilir. Assagida yer alan program Stack kullanilarak yapilmistir.

/*dinamik stack programi*/

#include <stdio.h>

#include <stdlib.h>

struct stackNode{

                        int data;

                        struct stackNode *sonraki;

 };

typedef struct stackNode STACKNODE;

typedef STACKNODE *STACKNODEPTR;

void ekle(STACKNODEPTR *, int);

int Cikar(STACKNODEPTR *);

 int Bos(STACKNODEPTR);

 void StackYaz(STACKNODEPTR);

 void Yonergeler(void);

 main()

{

   STACKNODEPTR stack = NULL;

   int secenek, deger;

  Yonergeler();

  printf("?");

  scanf("%d", &secenek);

  while(secenek != 3)

 {

   switch(secenek)

   {

      case 1:

                 printf("Lutfen bir tam sayi giriniz: ");

                 scanf("%d", &deger);

                 ekle(&stack, deger);

                 StackYaz(stack);

                break;

      case 2:

                 if(Bos(stack))

                   printf("The cikarilan deger %d.\n". Cikar(&stack));

                StackYaz(stack);

                break;

       default:

                printf("Gecersiz secenek.\n\n");

                Yonergeler();

                break;

     }

     printf("?");

    scanf("%d", &secenek);

   }

   printf("Programin Sonu\n");

   return(0);

}

/*Yonergeler*/

void Yonergeler(void)

{

   printf("Lutfen Bir Secenek Girin:\n"

           "1 bir deger eklemek icin\n"

           "2 bir deger cikarmak icin\n"

           "3 programa son vermek icin\n");

}

/*Stacke bir node ekleme*/

void ekle(STACKNODEPTR *Ust, int bilgi)

{

  STACKNODEPTR yeni;

  yeni = malloc(sizeof(STACKNODE));

  if(yeni != NULL)

  {

     yeni->data = bilgi;

     yeni->sonraki = *Ust;

     *Ust = yeni;

  }

  else

     printf("%d eklenmedi. Hafiza yetersiz.\n", bilgi);

 }

/*Bir bilgiyi stackden silme islemi*/

int Cikar(STACKNODEPTR *Ust)

{

  STACKNODEPTR hedef;

   int SilinecekDeger;

   hedef = *Ust;

   SilinecekDeger = (*Ust)->data;

   *Ust = (*Ust)->sonraki;

   free(hedef);

  return(SilinecekDeger);

}

/*Stackde ki bilgileri Yaz*/

void StackYaz(STACKNODEPTR suAn)

{

   if(suAn = = NULL);

      printf("Stack Su An Bos\n");

   else

         {

            printf("Stack:\n");

            while(suAn != NULL)

           {

             printf("%d - -> ", suAn->data);

            suAn = suAn->sonraki;

          }

          printf("NULL\n\n");

   }

}

/*Stack Bos mu?*/

int Bos(STACKNODEPTR Ust)

{

   return Ust = = NULL;

}

Anket
Sitemizi Nasil Buldunuz?
  Cok Faydali
  Eksikleri var
  idare eder
  Ilerde Cok daha iyi olacak
  Berbat
  Cok kotu

isupper, islower, toupper, tolower kullanimi eklendi.25 Ocak Saat 08:15 am


String deger degistirme fonksiyonlari eklendi.25 Ocak Saat 09:00 am



atof, atoi, atol kullanimi eklendi.25 Ocak Saat 09:15 am