// **** Algoritmauzmanı.com **** //
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
// Stack elemanları bu düğümlerde tutulacak
struct StackNode
{
int data;
struct StackNode* next;
};
//herbir veri eklenirken bu fonksiyonu kullanıyoruz. Düğüm için alan ayırıyor ve bilgileri ekliyor
struct StackNode* newNode(int data)
{
struct StackNode* stackNode =
(struct StackNode*) malloc(sizeof(struct StackNode));
stackNode->data = data;
stackNode->next = NULL;
return stackNode;
}
//Stack Bos mu fonksiyonu
int isEmpty(struct StackNode *root)
{
return !root;
}
//Stack yapısına Eleman Ekleyen Fonksiyon
// root, top elemanı
void push(struct StackNode** root, int data)
{
struct StackNode* stackNode = newNode(data);
stackNode->next = *root;
*root = stackNode;
printf("%d sayisi yigina eklendi\n", data);
}
// Yığından Eleman Çıkarma fonksiyonu
// root parametresi gönderiyoruz.
// işlem sonucu root değeri değişiyor, çünkü top elemanı çıkıyor
int pop(struct StackNode** root)
{
if (isEmpty(*root))
return INT_MIN;
struct StackNode* temp = *root;
*root = (*root)->next;
int popped = temp->data;
free(temp);
return popped;
}
// Top değerini kullanıcıya döndüren fonksiyon
int peek(struct StackNode* root)
{
if (isEmpty(root))
return INT_MIN;
return root->data;
}
void algoritmaUzmani();
void menu()
{ struct StackNode* root = NULL;
int secim,eklenecek;
while(1==1)
{
printf("\n Yapmak istediginiz islemi secin!\n");
printf("\n 1- Yigina Eleman Ekle\n");
printf("\n 2- Yigindan Eleman Cikar\n");
printf("\n 3- Konuyu Anlamadim!!!\n");
scanf("%d", &secim);
switch(secim)
{
case 1:
printf("\nEklemek istediginizi sayiyi girin...");
scanf("%d", &eklenecek);
push(&root, eklenecek);
break;
case 2:
printf("\n %d elemani yigindan cikarilmistir...", pop(&root));
break;
case 3:
algoritmaUzmani();
break;
}
}
}
int main()
{
menu();
return 0;
}
//sadece ilgili konuya gitmek icin. diger kodlar ile ilgisi yok
void algoritmaUzmani()
{
system("C:\\Progra~2\\Google\\Chrome\\Application\\chrome.exe www.algoritmauzmani.com/2016/09/bagli-liste-ile-yigin-islemleri.html");
printf("\n Eger asagida sistem yolu hatasi aliyorsaniz bunu onemsemeyin");
if(system)
{
system("C:\\Progra~1\\Google\\Chrome\\Application\\chrome.exe www.algoritmauzmani.com/2016/09/bagli-liste-ile-yigin-islemleri.html");
if(system)
system("C:\\Progra~2\\Mozill~1\\firefox.exe www.algoritmauzmani.com/2016/09/bagli-liste-ile-yigin-islemleri.html");
if(system)
system("C:\\Progra~1\\Mozill~1\\firefox.exe www.algoritmauzmani.com/2016/09/bagli-liste-ile-yigin-islemleri.html");
}
}
Etiketler: bağlı liste stack işlemi, linked list ile stack işlemler